2017-03-17 28 views
0

g++ main.cppで3つのC++ファイルをコンパイルしようとすると、次のエラーが発生します。私はそれらを1つのファイルにまとめれば動作します。C++未定義参照コンストラクタ

main.cpp:(.text+0x10): undefined reference to `Time::Time()' 

Time.cpp

#include <iostream> 
#include "Time.h" 
using namespace std; 

Time::Time() 
{ 
    a=5; 
} 

TIME.H

#ifndef TIME_H 
#define TIME_H 

class Time { 

public: 
Time(); 
private: 
int a; 
}; 
#endif 

main.cppに

あなたはそれぞれが独立しているため、すべてのcppファイルをコンパイルする必要が
#include <iostream> 
#include "Time.h" 
using namespace std; 


int main() 
{ 
    Time t; 
} 
+0

また、Time.cppをコンパイルするようにコンパイラに指示する必要があります。例: 'g ++ main.cpp Time.cpp -o main' – aschepler

+0

[定義されていない参照/未解決の外部シンボルエラーとは何か、それを修正する方法は?](http://stackoverflow.com/questions/12573816) /未定義の参照 - 未解決の - 外部シンボルエラー - と - 私 - 修正する) – 1201ProgramAlarm

答えて

3

コンパイル単位

g++ main.cpp Time.cpp -o main 
+0

ショートカットはありますか?私が100以上のファイルを持っているとどうなりますか? – Dave

+1

多くのファイルがある場合は、[makefile](https://en.wikipedia.org/wiki/Makefile)を作成する必要があります。そうしないと、何度も何度もファイルをコンパイルすることになります。 MSVCや他のいくつかのIDEでは、新しいソリューション/プロジェクトを作成するだけで、IDEがコンパイルを処理します –

+0

シェル拡張を使用することができます。 'g ++ * .cpp -o main' –