0

以下のコードを参照してください:

obj1.h

class OBJ1 : public A_OBJ
{
  public:
    //virtual pure from A_OBJ
    virtual void m_method();

    int getterX();

  private:
    int x;
}

obj2.h

class OBJ2 : public A_OBJ
{
  public:
    //virtual pure from A_OBJ
    virtual void m_method();

    void iWantX();
}

obj1.cpp

#include "obj1.h"

OBJ1 obj1;

OBJ1::m_method()
{
  //do_something()
}
OBJ1::getterX()
{
  return x;
}

obj2.cpp

#include "obj2.h"

OBJ2 obj2;

OBJ2::m_method()
{
  //do_something()
}
OBJ2::iWantX()
{
  int z = OBJ1::getterX();
}

その単純なコード(g++ obj1.cpp obj2.cpp _main_)をコンパイルしようとすると、迷惑なエラーが発生し続けます:

obj2.cpp: error: 'OBJ1' has not been declared

私はすでに宣言しようとしOBJ1 obj1ました、obj2.cppそして他のもの、何もうまくいきませんでした...

これを修正する方法を知っていますか?ありがとう !

4

1 に答える 1

1

シンプルで

#include "obj1.h"

obj2.cpp

この後、次のエラーが発生します。

int z = OBJ1::getterX();

getterXではないのでstatic。作成するかstatic、クラスのインスタンスで呼び出します。

結論:本からC++を学びます。

于 2012-10-04T08:59:44.097 に答える