函数使用时间单位的模板返回chrono::duration 我是C++模板的新手,我想写一个函数,它返回一个计时::用指定的时间单位和类型来创建持续时间。例如,这一行给出了以秒为单位的时间差为双倍: std::chrono::duration<double> secd = std::chrono::duration_cast<std::chrono::duration<double,std::ratio<1>>>(end - start); std::chrono::duration secd= 标准:计时:持续时间(结束-开始);

函数使用时间单位的模板返回chrono::duration 我是C++模板的新手,我想写一个函数,它返回一个计时::用指定的时间单位和类型来创建持续时间。例如,这一行给出了以秒为单位的时间差为双倍: std::chrono::duration<double> secd = std::chrono::duration_cast<std::chrono::duration<double,std::ratio<1>>>(end - start); std::chrono::duration secd= 标准:计时:持续时间(结束-开始);,c++,templates,time,chrono,C++,Templates,Time,Chrono,我有一个类函数,它给我一个持续时间,我想使用模板来指示返回值的类型和单位(在前面的示例中,这将是double和ratio)。我想要的是类似于这个伪代码的东西: template typename<class T, class R> std::chrono::duration<T, R> getStepTime() { return std::chrono::duration_cast<std::chrono::duration<T, R>>

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

template typename<class T, class R> std::chrono::duration<T, R> getStepTime() {
    return std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
模板类型名称std::chrono::duration getStepTime(){
返回std::chrono::duration\u cast(\u time);
}
其中
\u time
是具有持续时间的类成员。到目前为止,我所有的尝试都没有成功


如果有更好的方法实现这一点而不使用模板,我洗耳恭听。

错误使用
typename
关键字;试一试

template<typename T, typename R> 
std::chrono::duration<T, R> getStepTime(Step step) {
   return
     std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
模板
std::chrono::duration getStepTime(步长){
返回
标准::时间::持续时间(时间);
}

但是您应该显示更多的代码。您的示例太小,甚至无法进行测试。

使用了
typename
关键字;试一试

template<typename T, typename R> 
std::chrono::duration<T, R> getStepTime(Step step) {
   return
     std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
模板
std::chrono::duration getStepTime(步长){
返回
标准::时间::持续时间(时间);
}

但是您应该显示更多的代码。您的示例太小,甚至无法进行测试。

使用了
typename
关键字;试一试

template<typename T, typename R> 
std::chrono::duration<T, R> getStepTime(Step step) {
   return
     std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
模板
std::chrono::duration getStepTime(步长){
返回
标准::时间::持续时间(时间);
}

但是您应该显示更多的代码。您的示例太小,甚至无法进行测试。

使用了
typename
关键字;试一试

template<typename T, typename R> 
std::chrono::duration<T, R> getStepTime(Step step) {
   return
     std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
模板
std::chrono::duration getStepTime(步长){
返回
标准::时间::持续时间(时间);
}

但是您应该显示更多的代码。您的示例太小,甚至无法进行测试。

typename的用法不正确,模板中缺少一个结束语
。下面是一个经过调整的示例,用于测试编译:

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);
}
模板
std::chrono::duration getStepTime()
{
标准::时间::持续时间;
返回std::chrono::duration\u cast(duration);
}

错误使用了
typename
,模板中缺少一个结束语
。下面是一个经过调整的示例,用于测试编译:

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);
}
模板
std::chrono::duration getStepTime()
{
标准::时间::持续时间;
返回std::chrono::duration\u cast(duration);
}

错误使用了
typename
,模板中缺少一个结束语
。下面是一个经过调整的示例,用于测试编译:

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);
}
模板
std::chrono::duration getStepTime()
{
标准::时间::持续时间;
返回std::chrono::duration\u cast(duration);
}

错误使用了
typename
,模板中缺少一个结束语
。下面是一个经过调整的示例,用于测试编译:

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);
}
模板
std::chrono::duration getStepTime()
{
标准::时间::持续时间;
返回std::chrono::duration\u cast(duration);
}

如果您想要返回类型的泛型,您需要模板!如果你想要返回类型的泛型,你需要模板!如果你想要返回类型的泛型,你需要模板!如果你想要返回类型的泛型,你需要模板!两个答案都有效,谢谢大家!:)我只是想说(对于未来的谷歌用户),因为我的函数在一个类中,所以我必须将模板代码放在头中,否则它就无法编译。这两个答案都有效,谢谢大家!)我只是想说(对于未来的谷歌用户),因为我的函数在一个类中,所以我必须将模板代码放在头中,否则它就无法编译。这两个答案都有效,谢谢大家!)我只是想说(对于未来的谷歌用户),因为我的函数在一个类中,所以我必须将模板代码放在头中,否则它就无法编译。这两个答案都有效,谢谢大家!)我只是想说(对于未来的谷歌来说),因为我的函数在一个类中,所以我必须将模板代码放在头中,否则它就无法编译。