c++ - 在运行时获取/设置模板结构的静态成员

标签 c++ templates static

我正在尝试在运行时使用带有静态成员的模板结构来存储有关类的信息,但是我无法在没有错误的情况下获取或设置静态成员。

为什么这段代码不起作用?

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/

相关文章:

php - 在php中使用静态类变量作为类名调用静态方法

php - 如何在静态类中模拟 __destruct()?

c++ - 如何在 Visual C++ 中使用 Flex?

c++ - Variadic 模板模拟 "runtime"扩展

c++ - 如果只有属性的成员函数是 noexcept,如何声明 noexcept?

javascript - Play Framework JavaScript 函数作为 scala 模板参数

c++ - 如何修复我的 C++ 程序中的堆栈溢出错误?

c++ - 使用非 constexpr 对象的静态 constexpr 成员变量作为模板参数

c++ - 嵌套模板特化是如何完成的 C++

java - 在java中实时将IO Process的值传递给另一个类