我有两个文件quantity.h
和main.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;
}