我正在开发一个 VS2010C++ 控制台应用程序,并创建了一个管理器类,该类包含相同类型(事物)的静态和动态对象,其中一个是向量。
我最初在管理器类的构造函数上遇到错误,指出它所组成的类没有默认构造函数(但它不应该有默认构造函数,因为需要在运行时实例化对象,并输入运行时信息)我最终为持有的类创建了一个默认构造函数(什么都不做),然后我就可以继续了。
然后我完成了程序所需的所有功能,我得到了一大堆 LNK2019“关于函数 B 中引用的未解析外部符号 MethodA 的东西。
首先,如果我需要在运行时完成托管类的默认构造函数,为什么我需要它?
第二我如何摆脱这些LNK2019?(所有这些方法都在标头中标记为内联,并且它仅引用或来自管理器类,并且没有命名冲突。)作为一个小说明,它可能与混合访问修饰符有关。(对于静态成员)和->(对于动态成员)?
编辑:能够通过将其需要限制为单个方法并将其他静态修改为动态来摆脱默认构造函数
对于链接器错误:在 Thing.h
class Thing{
public : int ** Array;
public : int size;
public : Point pi;
public : SinglyLinkedList * moves;
...
public :inline bool operator==(const Thing * _thing);
...
};
东西.cpp
bool Thing::operator==(const Thing * _Thing){
for(int ii = 0; ii < m; ii++){
for(int jj = 0; jj < m; jj++){
if(Array[ii][jj] != _Thing->Array[ii][jj]){
return false;
}
}
}
return true;
}
事物管理器.h
class ThingMgr {
public : Thing * control;
public : Thing * Current;
public : Thing * previous;
public : int size;
主文件
int _tmain{
...
ThingMgr * TestTings= new ThingMgr(num);
...
if(testThings->control->operator==(testThings->Current)){ // pretty sure its here as it is not called anywhere else in the function.
...
}
错误
1>Project_1.obj : error LNK2019: unresolved external symbol "public: bool __thiscall Thing::operator==(class Thing const *)" (??8Board@@QAE_NPBV0@@Z) referenced in function _wmain
我认为它可能需要加上括号,但后来 VS 大喊期待一个成员。还有其他功能,但也许如果我能弄清楚这里发生了什么,那么这些应该是可以修复的。