2017-03-28 3 views
0

私はプログラミングの面で非常に新しいですし、少し問題があります。私は大学の割り当てとして簡単な購買プログラムを作成しました。割り当てのタスクの1つは、私が作成した3つのクラスのそれぞれに別々のファイルを使用することです。問題はここにあります。これらのクラスメソッドの少なくとも1つは、メイン関数でも使用されるグローバル関数を使用します。クラスとクラスのメソッドを別々のファイルに移行しようとすると、重複エラーが発生します。私はこれを回避する方法はありますか?マルチファイルプロジェクトのグローバル機能ですか?

ああ//

class A 
{ 
void example1(); //global function used in class a 
}; 
//end of class header 

a.cpp

void a::example1() 
{ 
example(); //global function used in both class a and main 
} 
//end of class cpp 

program.cpp

void example() //global function used in both class a and main 
{ 
//do something 
} 

int main() 
{ 
example(); //global function used in main 
} 
+1

[MCVE]私たちはあなたを助けることができますを作成してください。 –

答えて

4

クラスのヘッダヘッダに関数宣言を入れファイル、および対応するf .cppファイルで慰め定義:

lib.h:

#ifndef H_LIB 
#define H_LIB 

void foo(); // declaration 

#endif 

lib.cpp:

#include <iostream> 
#include "lib.h" 

// definition 
void foo() 
{ 
    std::cout << "foo() called\n"; 
} 

main.cppに:

#include "lib.h" 

int main() 
{ 
    foo(); // use 
} 

編集:

g++ -W -Wall -Wextra -pedantic -std=c++14 lib.cpp main.cpp -o prog 
+0

[デモ](https://wandbox.org/permlink/tSBXLsRoPmjuHsRA) –

+0

これを試しましたが、グローバル関数のそれぞれが既に定義されているというエラーが表示されます –

+0

@LukeBinmore:私のデモを見てください - そのようなエラーはありません? –

関連する問題