模板 报 无法解析的外部符号

宇智波_呵呵 2015-06-25 04:03:15


写了这么个代码, 报 无法解析的外部符号

error LNK2001: 无法解析的外部符号 "public: static struct test<struct foo> foo::_test" (?_test@foo@@2U?$test@Ufoo@@@@A)
1>D:\work\C++\C++Test\Debug\C++Test.exe : fatal error LNK1120: 1 个无法解析的外部命令
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2015-06-26
  • 打赏
  • 举报
回复
5L是正确的 这只是static成员变量方面的常识,需要在类外面初始化

template<typename T> class Tpl{ };

class B
{
public:
    static Tpl<B> sD;
    Tpl<B> &Get(){ return sD; }
};

Tpl<B> gD;
Tpl<B> B::sD = gD; 

int main ()
{
    B b;
    b.Get();
}
Saleayas 2015-06-25
  • 打赏
  • 举报
回复
static 是静态成员,这个静态成员需要在外部给她分配空间。 test<foo> foo::_test;
ztenv 版主 2015-06-25
  • 打赏
  • 举报
回复
楼上分析的对,循环依赖了
king191923157 2015-06-25
  • 打赏
  • 举报
回复
test<foo> _test时 foo的类型还不能确定 test 想知道 foo的类型,foo想知道test 的类型,死循环,就都不知道是什么类型了
赵4老师 2015-06-25
  • 打赏
  • 举报
回复
将错误信息中出现的标识符放在百度里面搜一下,看其在哪个.lib中,然后在本地硬盘上搜索该.lib,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。 VC6: 工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项 项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
宇智波_呵呵 2015-06-25
  • 打赏
  • 举报
回复
哪位大神帮忙分析下

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧