C++ 类静态变量模板问题
如题,直接上代码(注释说明一切)#include <cstdio>#include <iostream>
using namespace std;
template<typename T>
class Demo
{
public:
Demo()
{
printf("Demo create %d!\n", sizeof(T));
}
void print()
{
printf("%d\n", sizeof(T));
}
void print2(T v)
{
cout << v << endl;
}
};
class User
{
public:
template<typename T> static Demo<T> demo;
};
int main()
{
// 下面两行会报LNK1120: 1 个无法解析的外部命令
// User::demo<int>.print();
// User::demo<int>.print2(1);
// 即使执行了下面一行,依旧没有调用Demo类的构造函数
User::demo<int>;
getchar();
return 0;
}
IDE:VS2017 C++14标准 static 变量要在main函数外面定义。
在31行添加
Demo<int> User::demo;
在main里调用为
demo. print1();
demo. print2();
本帖最后由 xieglt 于 2020-11-13 19:10 编辑
另外,类里变量的声明这样写
class User
{
public:
static Demo<int> demo;
};
静态变量的生成在主函数之前。先执行静态对象的构造函数,再执行主函数。 xieglt 发表于 2020-11-10 20:15
静态变量的生成在主函数之前。先执行静态对象的构造函数,再执行主函数。
抱歉,最后我的解决方法不是这样的,而是:class User
{
public:
template<typename T> static Demo<T> demo;
};
template<typename T> Demo<T> User::demo;
int main()
{
User::demo<int>.print();
getchar();
return 0;
} lhgzbxhz 发表于 2020-11-13 18:56
抱歉,最后我的解决方法不是这样的,而是:
不用抱歉,你既然喜欢你那个语法,当我什么也没说。
页:
[1]