我正在尝试在运行时使用带有静态成员的模板结构来存储有关类的信息,但是我无法在没有错误的情况下获取或设置静态成员。
为什么这段代码不起作用?
template <typename T>
struct InfoHolder
{
static const char* name;
};
int main()
{
InfoHolder<int>::name = "This is an integer";
cout << InfoHolder<int>::name << endl;
return 0;
}
最佳答案
如果您收到链接器错误。您必须在某处定义 name
变量。 (在类中声明它不会在任何地方分配它,因为它不是对象的一部分)
在课后和主要之前写这个:
template <typename T>
const char *InfoHolder<T>::name;
这是静态数据成员的一个小不便。
关于c++ - 在运行时获取/设置模板结构的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13464692/