2012-03-26 10 views
1

私は私が取り組んでいるC++プロジェクトを持っています。私は今、ちょっと困っています。私は少し助けが必要です。私は.hファイルからmain.cppファイルにコードを実装する必要があり、どうやってそれを行うのか分かりません。 main.cppにからのコード例コードの場合main.cppファイルに.hファイルのコードを実装するにはどうすればよいですか?

switch (choice){ 
case 1: // open an account 
    { 
    cout << "Please enter the opening balence: $ "; 
    cin >> openBal; 
    cout << endl; 
    cout << "Please enter the account number: "; 
    cin >> accountNum; 
    cout << endl; 

    break; 
    } 
case 2:// check an account 
    { 
    cout << "Please enter the account number: "; 
    cin >> accountNum; 
    cout << endl; 
    break; 
    } 

と.hファイルからコード:あなたは、変圧器の下にボイド挿入を使用する必要があります.hファイルで

void display(ostream& out) const; 
// displays every item in this list through out 

bool retrieve(elemType& item) const; 
// retrieves item from this list 
// returns true if item is present in this list and 
//    element in this list is copied to item 
//   false otherwise 

// transformers 
void insert(const elemType& item); 
// inserts item into this list 
// preconditions: list is not full and 
//    item not present in this list 
// postcondition: item is in this list 

ケース1のmain.cppにあります。あなたはどうしますか?どんな助けもありがたいです。私は、どのようにすればいいか分かっている人を誰かに混乱させないことを願っています。

#include "header_file.h" 

今、あなたはあなたが望んでいたように自由にcase 1:insert()を呼び出すことができるはずです:ありがとうmain.cpp

+0

は、あなたのmain.cppにファイル内の.hファイルを含めると実装を行います。 .cppがスタートアップファイル(メインを持たない)でない場合は、別の.cppファイルを作成してメインプログラムにリンクする必要があります。 – Jagannath

+0

main.cppファイルの先頭に.hファイルインクルードがあります – Lea

答えて

1

あなたはこのように、上部にあなたのヘッダファイルをインクルードする必要があります。

しかし、これらの関数宣言は実装がなければ実際にはあまり効果がありません。だから、いくつかの選択肢があります。実装をmain.cppに置くか、またはこれらの関数の実装が保持される新しい.cppファイルを作成することができます。 (心配しないで、リンカーは "別個のソースファイル"ビジネス全体を扱います)

ヘッダーファイルで関数を宣言し、それらをcppファイルに実装するための非常に基本的な方法は、以下の通りです:

がfoo.hファイル:

void insert(const elemType& item); // This is your declaration 

foo.cppファイル:

#include "foo.h" 
void insert(const elemType& item) 
{ 
    // Function should do its job here, this is your implementation 
} 
+0

.hファイルの関数のすべての実装が含まれている別の.cppファイルがあります。だから私は、私が他の.cppファイルから何かを取り込む必要があるかどうか分からない。 – Lea

+0

間違っていますか?何が起こるかは、ソースファイルがすべてコンパイルされた後で、リンカは(その名前が暗示するように)リンカを大きなコンパイルされたソースファイルのようにリンクします。実装が別々のソースファイルにある場合、リンカーがこれを処理する必要があることを心配する必要はありません。 –

+0

大丈夫です。しかし、私はまだインプリメンテーションが別の.cppファイルの下にある場合にmain.cppのインサートを使用する方法を知らない。 – Lea

0

さて、あなたは、ヘッダーファイルが含まれている場合、あなたはどのFUNCを実装することができるはずですあなたがそのヘッダーで宣言したものです。たとえば、あなたがinsert機能を実装したい、あなたのmain.cppには次のようになります。

#include "myhfile.h" 

void insert(const elemType& item) 
{ 
    // implement here 
} 

int main() 
{ 
    // your switch here 
    // you can now use insert(item) because it is implemented above 
}