为什么我收到链接器错误?

dar*_*rko 1 c++ class

我收到错误:"未定义引用'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
Run Code Online (Sandbox Code Playgroud)

主要:

#include "header.h"

int main()
{
    yClass a;

    system("PAUSE");
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*son 8

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

初始化main中的对象时使用构造函数,因此必须存在其定义.相反,"一"和"两"方法从不被调用,因此实际上并不需要对它们进行定义.

从未定义构造函数的简单修复是在类定义中定义它:

struct yClass {
    yClass() : a(), b() {}

private:
    int a, b;
};
Run Code Online (Sandbox Code Playgroud)

如果问题是您已定义构造函数但未与定义链接,则需要将其他转换单元(".cpp文件")添加到makefile,项目,命令行等.