1

別のファイルで定義されたクラスがあり、ある時点で、別のソース ファイルからパブリック メンバー関数の 1 つにアクセスする必要があります。何らかの理由で、その方法を忘れてしまい、コンパイラーがエラーを出してしまいました。

次のようなクラス A の定義を持つ classA.h があります。

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

そして、実装を含む別のファイル classA.cpp 。そして、他のファイル blah.cpp にヘッダーを含めて、次のようにアクセスしようとします。

 classA::function1(15);

私のコンパイラは、「classA::function1(int)」に一致するものが見つからないというエラーで拒否します。
それが問題になる場合は、Embarcadero RAD studio 2010 を使用します。

4

2 に答える 2

9

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

classA a;
a.function1(15);

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

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

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

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

于 2010-11-30T11:18:49.787 に答える
1

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

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

于 2010-11-30T11:20:41.930 に答える