首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解析的外部c++,默认构造函数

未解析的外部c++,默认构造函数
EN

Stack Overflow用户
提问于 2012-03-07 09:43:15
回答 1查看 402关注 0票数 0

我正在开发一个VS2010C++控制台应用程序,并创建了一个管理器类,该类包含相同类型(事物)的静态和动态对象,其中一个是向量。

我最初在管理器类的构造函数上得到一个错误,声明它组成的类没有默认构造函数(但它不应该有默认构造函数,因为对象需要在运行时实例化,并且有了运行时输入的信息),我最终为持有的类创建了一个默认构造函数(它什么也不做),然后我可以继续。

然后我完成了程序所需的所有功能,我得到了一大堆“关于functionB中引用的未解析外部符号MethodA的东西”。

首先,如果我需要在运行时完成,为什么需要托管类的默认构造函数?

其次,我如何摆脱这些LNK2019?(所有这些方法都内联地标记在标头中,它只引用或来自管理器类,并且没有命名冲突。)需要注意的是,这可能与必须混合使用访问修饰符有关。(静态成员)和-> (动态成员)?

编辑:通过将默认构造函数的需求限制为单个方法,并将其他静态函数修改为动态方法,我们能够摆脱默认构造函数

链接器错误:在Thing.h中

代码语言:javascript
复制
class Thing{
public : int ** Array;
public : int size;
public : Point pi;
public : SinglyLinkedList * moves;
...
public :inline bool operator==(const Thing * _thing);
...
};

Thing.cpp

代码语言:javascript
复制
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

代码语言:javascript
复制
class ThingMgr {
public : Thing * control;
public : Thing * Current;
public : Thing * previous;
public : int size;

main.cpp

代码语言:javascript
复制
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.
    ...
}

错误

代码语言:javascript
复制
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大喊着期待一个成员。还有其他函数,但如果我能弄清楚这里发生了什么,那么这些函数应该是可以修复的。

EN

回答 1

Stack Overflow用户

发布于 2012-03-07 09:59:03

看看代码会很有帮助。听起来,你用你的类型创建了一个std::vector<T>,它被赋予了一些非零的大小:std::vector<T>需要初始化对象,而你显然没有给它一个可以复制的对象。您可能希望创建一个空的std::vector<T>,并使用push_back()您容易构造的对象(如果您有C++2011系统,则使用emplace() )。

关于链接错误:你显然没有定义你正在使用的一些函数。这些到底是什么,是不可能用你给出的模糊描述来分辨的。您需要提供更多细节,例如确切的链接错误以及假设的实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9594660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档