分离c++代码时出现编译错误



我最近做了一个小例子,以便练习使用Geany在.h.cpp文件中分离c++代码。代码编译没有问题,但在构建时出现以下错误:

g++ -std=c++11 -Wall -o "parent1" "parent1.cpp" (in directory: C:Program Files (x86)Geany)
C:UsersSabineAppDataLocalTempccnonGdW.o:parent1.cpp:(.text+0x15): undefined reference to `grandparent::grandparent(int)'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/libmingw32.a(main.o): In function `main':
i:pgiawsrcpkgmingwrt-4.0.2-1-mingw32-srcbld/../mingwrt-4.0.2-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Compilation failed.

源文件:

parent1.h:

#ifndef PARENT1_H
#define PARENT1_H
#include "grandparent.h"
class parent1 :public grandparent
{   private:
       int i ;
    public:
       parent1(int p1a, int p1b, int p1c);
};
#endif

parent1.cpp:

 #include "parent1.h"
    #include "grandparent.h"
    #include <iostream>
    #include <string>
    using namespace std;
    parent1::parent1(int a, int b, int c)
    : grandparent(a)
    {}

你好,谢谢你的快速回复。

删除parent1.cpp中的#include " grandparents .h"行——这不起作用。(错误:期望类名在{-token之前)

祖父母。h看起来像这样:

#ifndef GRANDPARENT_H
#define GRANDPARENT_H
class grandparent
{   private:
        int gx; 
    public: 
        grandparent(int gx);    
};
#endif

您需要链接到祖父对象- grandparent。O或它所属的库。

更新:特别是你需要(假设你已经编译了爷爷。cpp):

g++ -std=c++11 -Wall -o "parent1" "parent1.cpp" "grandparent.o"

我相信

   g++ -std=c++11 -Wall -o "parent1" "parent1.cpp" "grandparent.cpp"

也可以

最新更新