我正在一个VS2010C++控制台应用程序,并创建了一个管理器类,其中包含静态和动态对象相同类型(事)其中之一是一个向量。无法解析的外部C++,默认的构造函数
我最初在管理器类的构造函数中遇到了一个错误,指出它所组成的类没有默认构造函数(但它不应该有默认构造函数,因为对象需要在运行时实例化,并且用运行时输入的信息)我最终为持有的类创建了一个默认构造函数(它什么都不做),然后我就能够继续。
然后,我就用我需要为程序的所有功能做了,我也得到了一大堆LNK2019的“一些事情无法解析的外部符号治法在functionB引用。
第一为什么我需要一个默认的构造函数如果我需要它在运行时完成的托管类?
秒我该如何摆脱这些LNK2019?(所有这些方法都在标头中内联标记,并且仅在其中引用或从管理员类,并且没有命名冲突),作为一个小纸条,它可能与必须混合访问修饰符(对于静态成员)和 - >(对于动态成员)有关系?
编辑: 能够通过限制其需要一个单一的方法,并修改其它静态为动态
链接器错误摆脱默认构造函数:在Thing.h
class Thing{
public : int ** Array;
public : int size;
public : Point pi;
public : SinglyLinkedList * moves;
...
public :inline bool operator==(const Thing * _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;
}
ThingMgr.h
class ThingMgr {
public : Thing * control;
public : Thing * Current;
public : Thing * previous;
public : int size;
的main.cpp
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 *)" ([email protected]@[email protected]@Z) referenced in function _wmain
我认为这可能是需要把括号,但随后VS大叫大约期待一个成员。还有其他的功能,但是如果我能够弄清楚这里发生了什么,那么这些应该是可以修复的。
注意我知道它不是通用的C++约定来识别所有成员的访问修饰符,但我已经使用了4种不同的c/C++编译器,并且没有人曾经抱怨过,或者从中引发任何问题 – gardian06 2012-03-07 03:15:41
链接问题是你承诺在头文件中定义运算符,说它是“inline”,但是你只在实现文件中定义它。只需删除内联。 – 2012-03-07 08:35:28