为什么我得到一个链接错误

Why am I getting a linker error?

本文关键字:一个 链接 错误 为什么      更新时间:2023-10-16

我得到错误:"未定义的引用'yClass::yClass()'

当试图在main中创建类的实例时。有人知道为什么吗?

头:

#ifndef header_h
#define header_h
#include <cstdlib>
#include <iostream>
using namespace std;
class yClass
{
      public:
             void one();
             void two(int,int);
             yClass();
      private:
              int a;
              int b;
};
#endif
主:

#include "header.h"
int main()
{
    yClass a;
    system("PAUSE");
    return EXIT_SUCCESS;
}

您已经声明了yClass的构造函数,但还没有定义它。或者,如果你在另一个文件中定义了它(即对应于"header.h"的.cpp文件),那么你就没有链接到它。

构造函数在初始化main中的对象时使用,因此必须提供其定义。相比之下,"one"answers"two"方法从不被调用,因此实际上不需要为它们定义。

没有定义构造函数的一个简单修复方法是在类定义中定义它:

struct yClass {
    yClass() : a(), b() {}
private:
    int a, b;
};

如果问题是您已经定义了构造函数,但没有与定义链接,那么您需要将其他翻译单元(".cpp文件")添加到您的makefile,项目,命令行等

因为您声明了yClass的构造函数(和其他函数),但没有实现它们。

你在哪里定义了yClass?除非你
#include "yclass.cpp
或者在包含yclass的库中的链接,仅仅包括头文件是不够的