【发布时间】:2019-03-22 09:41:34
【问题描述】:
我正在尝试创建一个支持整数和浮点数的数据类型,并将在构造过程中推断出类型。
下面的代码可以编译,但我想修改它,以便编译 3 条注释行。
这在 C++98 中可行吗?
#include <iostream>
#include <string>
using namespace std;
template <typename T>
class Result
{
public:
Result(std::string name, T value) : m_name(name), m_value(value) { }
private:
std::string m_name;
T m_value;
};
int main()
{
Result<double> hello(std::string("Test"), 123.45);
//std::vector<Result> results;
//results.push_back(Result("Test Int", 32));
//results.push_back(Result("Test Double", 42.1));
return 0;
}
编辑:
我只是希望能够将结果存储在向量中,结果类型将具有名称和值。该值可以是 int 或 float。除此之外,我并不关心类是如何定义的或它是如何实例化的。
【问题讨论】:
-
我认为你放错了括号...
results.push_back(Result("Test Int"), 32);应该是results.push_back(Result("Test Int", 32));。下一行也是。 -
std::vector<Result> results;即使在 C++20 中仍然无效 -
你没有传递模板参数来导致 std::vector
-
@LuisGP 谢谢,我修好了
-
编译器如何能够推断出
Resultinstd::vector<Result> results;的模板参数?那是不可能的。