【发布时间】:2017-04-13 20:57:26
【问题描述】:
我正在尝试使用模板动态设置结构内的字段。我已经在代码中编写了这两种方法。两种方法都不起作用说no member named t.age. 我如何能够动态设置字段?任何帮助表示赞赏。
#include <iostream>
using namespace std;
struct hello {
string name;
};
struct bye {
int age;
};
template <typename T>
void printHello(string key) {
T t;
if (key == "HELLO") {
t.name = "John";
}
else {
t.age = 0;
}
}
template <typename T>
T setStruct(T t) {
if (typeid(t) == typeid(hello)) {
t.name = "John";
}
else {
t.age = 0;
}
return t;
}
int main() {
//printHello<hello>("HELLO"); // ERROR: no member named t.age
hello h;
h = setStruct(h); // ERROR: no member named t.age
return 0;
}
【问题讨论】:
-
动态和模板通常不能很好地结合在一起,因为运行时没有模板
-
printHello中的代码同时使用了T::name和T::age,因此它只适用于同时具有这两者的类型。
标签: c++ templates dynamic struct