如何定义类中的模板化变量



我有两个文件quantity.hmain.cpp,它们的内容低于

文件quantity.h

#include <iostream>
#include <utility>
template <typename T = unsigned int>
class quantity
{
enum volume {ltr,gallon,oz};
public:
using ret = std::pair<volume,T>;
ret get_volume()
{
return std::make_pair(ltr,5);
}

}; 

然后我有main.cpp

#include<quantity.h>
int main() {
quantity <unsigned int> q1;
ret t = q1.get_volume();
return 0;
}

如果我只调用q1.get_volume();,但我想将结果存储在quantity.h文件中声明/定义的std::pair ret中,则它会编译。我得到代码作为的编译错误

error: 'ret' was not declared in this scope

使用auto,让编译器为您做推导工作:

#include <iostream>
#include <utility>
template <typename T = unsigned int>
class quantity
{
enum volume { ltr, gallon, oz };
public:
auto get_volume()
{
return std::make_pair(ltr, 5);
}
};
int main() 
{
quantity <unsigned int> q1;
auto t = q1.get_volume();
return 0;
}

最新更新