我收到错误:“对'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;
}
答案 0 :(得分:8)
您已声明了yClass的构造函数,但未对其进行定义。或者,如果您已在另一个文件中定义它(即对应于“header.h”的.cpp文件),那么您还没有与之链接。
初始化main中的对象时使用构造函数,因此必须存在其定义。相反,“一”和“两”方法从不被调用,因此实际上并不需要对它们进行定义。
从未定义构造函数的简单修复是在类定义中定义它:
struct yClass {
yClass() : a(), b() {}
private:
int a, b;
};
如果问题是您已定义构造函数但未与定义链接,则需要将其他转换单元(“.cpp文件”)添加到makefile,项目,命令行等。
答案 1 :(得分:1)
因为您声明了构造函数(以及yClass的其他函数),但没有实现它们。
答案 2 :(得分:0)
你在哪里实际定义了yClass?除非你
#include "yclass.cpp
或者在包含yclass的库中链接,只包括标题是不够的。