2010-11-30 18 views
1

クラスは別ファイルで定義されていますが、ある時点で別のソースファイルからパブリックメンバー関数の1つにアクセスする必要があります。何らかの理由で、私はそれを行う方法を忘れていて、コンパイラは私にエラーを与えます。C++:クラスの外部からのパブリックメンバー関数へのアクセス

私はこれに似たクラスの定義とclassA.hがあります実装と

class classA { 
    public: 
    int function1(int alpha); 
} 

、別のファイルclassA.cpp。そして、いくつかの他のファイルblah.cppに私は、ヘッダーが含まれており、このようにそれにアクセスしよう:

classA::function1(15); 

と私のコンパイラは、それがクラスA ::はfunction1(int型の一致を見つけることができなかったというエラーでそれを拒否します) '。
問題がある場合、私はEmbarcadero RAD studio 2010を使用します。

答えて

9

通常の関数を呼び出すには、インスタンスが必要です。

classA a; 
a.function1(15); 

あなたがclassA::を使用して関数を呼び出したい場合、それはstaticにする必要があります。

classA { 
    public: 
    static int function1(int alpha); 
}; 

//... 
classA::function1(15); 

静的メソッド内で、あなたは同じ理由で、任意の非静的メンバ変数にアクセスできないことに注意してください - コンテキストを提供するために、何のインスタンスはありません。

+0

または 'classA'は名前空間である必要があります。 – Naveen

+2

@Naveen:本当ですが、それは名前空間の*本当に悪い名前です:) – sje397

+0

ありがとう。私はこれを必要として以来、しばらくしてきました。 – Andrew

1

function1は静的メソッドですか?いいえの場合は、そのクラスのオブジェクトがメンバー関数を呼び出す必要があります。

あなたのblah.cppにclassA.hを含め、クラスAのオブジェクトを作成してからメンバー関数を呼び出します。

関連する問題