2011-04-22 76 views
1

我得到的错误:“未定义参考‘yClass :: yClass()’为什么我会收到链接错误?

试图创建主类的任何人都知道为什么的实例

头时:?

#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

你的header.h是什么样的? – rzetterberg 2011-04-22 21:51:21

回答

8

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

构造函数在main中的对象被初始化时使用,所以它的定义必须存在。相反,“一个”和“两个”方法从来没有被调用,所以它们的定义实际上并不需要。

为被从来没有定义构造一个简单的解决方法是在类定义来定义它:

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

private: 
    int a, b; 
}; 

如果问题已定义的构造函数,但不与定义链接,那么你需要添加另一个翻译单元(“.cpp文件”)到您的生成文件,项目,命令行等。

1

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

0

你究竟在哪里定义了yClass?除非你用
#include "yclass.cpp
或链接在一个包含yclass的库中,只包括头是不够的。

+2

不要#include“.cpp”文件。 – 2011-04-22 21:56:08

相关问题