0

fun.cpp ファイルを考えてみましょう:

class fun

{

  public:

  void sum();

  void dispaly();

};


Class fun2

{

    public: 

     void subtract();


};

ここで、fun.cpp ファイルの減算メソッドのみにアクセスしたい別の C++ ファイル execute.cpp を検討します。

「fun.cpp」ファイルをexecute.cppに含めたくありません(大きなプロジェクトでは)サイズが大きくなります..

では、ファイルを含む特定のメソッドにどのようにアクセスできますか????

4

4 に答える 4

2

「fun.cpp」ファイルをexecute.cppに含めたくない

1 つの定義ルールを破る可能性があるため、そうすべきではありません (実装も cpp ファイルにあると仮定します)。

これを行う通常の方法は、クラス定義をヘッダーに入れ、ヘッダー ファイルのみをインクルードすることです。

あなたの質問に答えるために、あなたはできますが、それは醜いです.

C++ では、定義が同一である限り、クラスを複数回定義できます。したがって、execute.cppあなたは簡単に書くことができます:

//execute.cpp
class fun2  //note lower-case 'c'
{

    public: 
     void subtract();
};
// use fun2 here

使用する前に。しかし、繰り返しになりますが、通常の方法は、クラスの定義と実装を.hファイルとファイルに分割すること.cppです。

必須のアドバイス: C++ の入門書を読んでください。

于 2012-09-10T07:35:31.060 に答える
0

ファイルをインクルードしても、リンカーは実際に使用されるコードのみをインクルードします。これが、静的ライブラリを使用することが、すべてを含める必要がある動的ライブラリよりも望ましい場合がある理由です。

于 2012-09-10T07:30:41.050 に答える
0

できません。関数をインクルードする場合は、関数を定義するコードにリンクするファイルを実際にインクルードする必要があります。インターフェイスだけが必要で関数を使用しない場合は、次のように execute.cpp でクラスを宣言するだけです。

class fun
{
    public:
        void subtract();
};

しかし、そこで減算を使用することはできませんでした。

于 2012-09-10T07:31:01.330 に答える
0

関数を使用する cpp ファイルに、クラスを定義するfun(および の宣言を持つsubtract())ヘッダー ファイルを含める必要がありますsubtract()
ただし、関数を定義する必要があることに注意してください。

fun2.h

#ifndef FUN2_H
#define FUN2_H

Class fun2  
{      
    public:        
       void subtract();   
};

#endif // FUN2_H

fun2.cpp

#include "fun2.h"
void func2::subtract()
{

}

実行.cpp

#include "fun2.h"

//use subtract() through object of `fun2`

特定のソースファイルでメンバー関数を使用するには、その関数を宣言するクラスの定義がコンパイラに表示される必要があることに注意してください。特定の定義へのリンクの実際の作業は、リンク段階で行われます。上記の形式に従って、リンカーは適切な関数をリンクします。

于 2012-09-10T07:38:43.967 に答える