我最近做了一个小例子,以便练习使用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"
也可以