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 obj1obj2.cpp其他事情,但没有任何效果......

你知道如何解决这个问题吗?谢谢 !

4

1 回答 1

1

用一个简单的

#include "obj1.h"

obj2.cpp.

在此之后,以下将产生错误:

int z = OBJ1::getterX();

因为getterX不是static。要么 make 它static,要么在类的实例上调用它。

底线:从书中学习 C++。

于 2012-10-04T08:59:44.097 回答