在模板上使用静态方法时发生LNK2019错误

时间:2019-04-26 19:06:30

标签: c++

在声明带有模板的静态方法时出现unresolved external symbol错误。我已经检查了许多有关堆栈溢出的类似问题,但似乎没有任何建议可以解决。

  • *。cpp文件包含在构建版本中
  • LoadFromFile文件中的
  • *.h*.cpp中有声明
  • 参数正确

还有什么可能出问题?

这是我在*.h文件中声明的方式:

template <class T> static T* LoadFromFile(std::string fileName, bool isDirected);

这是*.cpp中的样子:

template <class T>
T* Container::LoadFromFile(std::string fileName, bool isDirected)
{
// generating instance of T. Returning T
}

可能的原因(在main.cpp中):

AdjacencyList* al = AdjacencyList::LoadFromFile<AdjacencyList>("dane_droga.txt", false);

完整错误:

  

严重性代码描述项目文件行抑制状态   错误LNK2019无法解析的外部符号“ public:静态类AdjacencyList * __cdecl Container :: LoadFromFile(class std :: basic_string,class std :: allocator>,bool)”(?? $ LoadFromFile @ VAdjacencyList @@@ Container @@ SAPAVAdjacencyList @@函数_main中引用的V?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ _ N @ Z)

代码的语法正确吗?

0 个答案:

没有答案