我正在开发一个VS2010C++控制台应用程序,并创建了一个管理器类,该类包含相同类型(事物)的静态和动态对象,其中一个是向量。
我最初在管理器类的构造函数上得到一个错误,声明它组成的类没有默认构造函数(但它不应该有默认构造函数,因为对象需要在运行时实例化,并且有了运行时输入的信息),我最终为持有的类创建了一个默认构造函数(它什么也不做),然后我可以继续。
然后我完成了程序所需的所有功能,我得到了一大堆“关于functionB中引用的未解析外部符号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);
...
};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 *)" (??8Board@@QAE_NPBV0@@Z) referenced in function _wmain我认为它可能需要放入括号,但随后VS大喊着期待一个成员。还有其他函数,但如果我能弄清楚这里发生了什么,那么这些函数应该是可以修复的。
发布于 2012-03-07 09:59:03
看看代码会很有帮助。听起来,你用你的类型创建了一个std::vector<T>,它被赋予了一些非零的大小:std::vector<T>需要初始化对象,而你显然没有给它一个可以复制的对象。您可能希望创建一个空的std::vector<T>,并使用push_back()您容易构造的对象(如果您有C++2011系统,则使用emplace() )。
关于链接错误:你显然没有定义你正在使用的一些函数。这些到底是什么,是不可能用你给出的模糊描述来分辨的。您需要提供更多细节,例如确切的链接错误以及假设的实现。
https://stackoverflow.com/questions/9594660
复制相似问题