首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数以使用时间单位的模板返回时间::工期。

函数以使用时间单位的模板返回时间::工期。
EN

Stack Overflow用户
提问于 2013-12-28 10:15:30
回答 2查看 1.3K关注 0票数 0

我是C++模板的新手,我正在尝试编写一个函数,它用指定的时间单位和类型返回时间::工期。例如,这一行以秒为单位给出的时间差为双倍:

代码语言:javascript
复制
std::chrono::duration<double> secd =
     std::chrono::duration_cast<std::chrono::duration<double,std::ratio<1>>>(end - start);

我有一个类函数,它给了我一个持续时间,我想使用模板来指示返回值的类型和单元(在前面的示例中,这将是double和ratio<1>)。我想要的是类似于这个伪码的东西:

代码语言:javascript
复制
template typename<class T, class R> std::chrono::duration<T, R> getStepTime() {
    return std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}

其中_time是具有持续时间的类成员。到目前为止,我所有的尝试都没有编译。

如果有更好的方法来实现这一点而不使用模板,我会全神贯注。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-28 10:38:56

typename的用法不好,模板中缺少关闭>。下面是一个经过调整的示例来测试编译:

代码语言:javascript
复制
template <typename T, typename R> 
std::chrono::duration<T, R> getStepTime() 
{
    std::chrono::duration<T, R> duration;
    return std::chrono::duration_cast<std::chrono::duration<T, R>>(duration);
}

http://ideone.com/QGYm8u

票数 2
EN

Stack Overflow用户

发布于 2013-12-28 10:21:51

typename关键字使用不当;尝试

代码语言:javascript
复制
template<typename T, typename R> 
std::chrono::duration<T, R> getStepTime(Step step) {
   return
     std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}

但你应该展示更多的代码。您的例子太小,甚至无法测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20813366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档