Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ LNK2019将函数移动到另一个头文件后未解析的外部符号_C++_Visual Studio 2015 - Fatal编程技术网

C++ LNK2019将函数移动到另一个头文件后未解析的外部符号

C++ LNK2019将函数移动到另一个头文件后未解析的外部符号,c++,visual-studio-2015,C++,Visual Studio 2015,我的一个头文件中有两个数组模板,一切正常。然后我想,我最好在我的代码中加入一些迂腐的东西,所以我把它们都移到了另一个头文件中,主要是为了它们(对于另一个函数,它想使用其中的一个)。然后每次我在其他头文件中使用这些模板中的函数时,都会出现LNK2019错误 因为在我将代码粘贴到其他地方之前,一切都很好,所以我认为代码是好的,这只是我缺乏理解。基本上,问题是:当我将函数移动到另一个头文件时,为什么会出现链接器错误 以下是我的一个错误示例: 错误LNK2019未解析的外部符号“public:char\

我的一个头文件中有两个数组模板,一切正常。然后我想,我最好在我的代码中加入一些迂腐的东西,所以我把它们都移到了另一个头文件中,主要是为了它们(对于另一个函数,它想使用其中的一个)。然后每次我在其他头文件中使用这些模板中的函数时,都会出现LNK2019错误

因为在我将代码粘贴到其他地方之前,一切都很好,所以我认为代码是好的,这只是我缺乏理解。基本上,问题是:当我将函数移动到另一个头文件时,为什么会出现链接器错误

以下是我的一个错误示例:

错误LNK2019未解析的外部符号“public:char\u thiscall C2DArray::Get(int,int)”(?Get@$C2DArray@D@@QAEDHH@Z)在函数“public:char\uu thiscall SGame::GetRecordOutput(int,int)”中引用(?GetRecordOutput@SGame@@QAEDHH@Z)Mastermind C:\Users\Master\Documents\Visual Studio 2015\Projects\Mastermind\Mastermind\Menu.obj 1


如果重要的话,我会使用Visual Studio 2015。

谢谢您的回复。看起来,我已经解决了我的问题。原因是类模板不是专门的(而且必须是)。我所要做的就是包括我想要的这些模板的类型。很抱歉在进行更广泛的研究之前发布。

您能提供一个吗?在简单的情况下(我认为您有),错误意味着某些编译单元看到了声明,没有看到定义,但调用了该函数。我假设其他一些编译单元已经将定义视为
inline
。当
内联
函数与其声明分开定义时,只有当模块不使用该函数时,模块才可以看到没有定义的声明。有时,只在另一个模块中调用定义的函数
inline
。但是,即使它工作,它也不是正确的C++。具体来说,一个实例化的代码<代码> sGe::GETReCordOutsU/SCOD>已经看到了声明,但没有定义<代码> C2DARRI::GET < /C> >和任何一个看到了<代码> C2DARRI::GET < /C> >的模块,将其视为<代码>内联。这些事实的组合构成了错误的代码,必须加以纠正(通常在需要时包括
C2DArray::Get
的定义)。