-1

私は最近、Geany.hを使用してと.cppファイルを分離する C++ コードを練習するために、小さな例を作成しました。コードは問題なくコンパイルされますが、ビルドすると次のエラーが発生します。

g++ -std=c++11 -Wall -o "parent1" "parent1.cpp" (in directory: C:\Program Files (x86)\Geany)
C:\Users\Sabine\AppData\Local\Temp\ccnonGdW.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:\p\giaw\src\pkg\mingwrt-4.0.2-1-mingw32-src\bld/../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.

ソース ファイル:

親 1.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

親 1.cpp:

 #include "parent1.h"
    #include "grandparent.h"
    #include <iostream>
    #include <string>
    using namespace std;

    parent1::parent1(int a, int b, int c)
    : grandparent(a)
    {}

こんにちは、素早い返信ありがとうございます。

この行を削除 #include "grandparent.h" in parent1.cpp --- これは機能しませんでした。(エラー: {-token の前にクラス名が必要です)

grandparent.hは次のようになります。

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

1 に答える 1

3

祖父母オブジェクト - grandparent.o またはそれが属するライブラリとリンクする必要があります。

更新:特に必要です(すでに grandparent.cpp をコンパイルしていると仮定して):

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

私は信じている

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

も機能します。

于 2014-05-22T18:17:58.353 に答える