template<typename T>: 只允许静态数据成员模板
template<typename T>: only static data member templates are allowed
class value {
template<typename T> T value_1;
float value_2;
public:
template<typename T> void Set1(T first) {
value_2 = (float)0;
value_1 = first;
}
void Set2(float second) {
value_2 = second;
}
float Get2() {
return this->value_2;
}
template<typename T> T Get1() {
return value_1;
}
};
Value_1
报错,说只允许静态数据成员模板。有没有办法让 value_1
没有类型?
必须知道非静态数据成员的类型。否则,sizeof(value)
是什么?
要存储任意类型的值,您可以使用std::any
or boost::any
。
使用:
class value {
std::any value_1;
float value_2;
public:
template<typename T> void Set1(T first) {
value_2 = (float)0;
value_1 = first;
}
void Set2(float second) {
value_2 = second;
}
float Get2() {
return this->value_2;
}
template<typename T> T Get1() {
return std::any_cast<T>(value_1);
}
};
class value {
template<typename T> T value_1;
float value_2;
public:
template<typename T> void Set1(T first) {
value_2 = (float)0;
value_1 = first;
}
void Set2(float second) {
value_2 = second;
}
float Get2() {
return this->value_2;
}
template<typename T> T Get1() {
return value_1;
}
};
Value_1
报错,说只允许静态数据成员模板。有没有办法让 value_1
没有类型?
必须知道非静态数据成员的类型。否则,sizeof(value)
是什么?
要存储任意类型的值,您可以使用std::any
or boost::any
。
使用:
class value {
std::any value_1;
float value_2;
public:
template<typename T> void Set1(T first) {
value_2 = (float)0;
value_1 = first;
}
void Set2(float second) {
value_2 = second;
}
float Get2() {
return this->value_2;
}
template<typename T> T Get1() {
return std::any_cast<T>(value_1);
}
};