0

私は問題があります。文字列とオブジェクトを使用したクラス ロジックがあります。ロジッククラスに書き込むときにcout<<a、この演算子が文字列を変更することを望みます。だから私はこれをしました:

logic.h

class logic
{
private:
int str;
A a;
public:
...
};

ロジック.cpp

...
...
cout<<*a;
...

ostream& operator<<(ostream& os, const A& A)
{
    int=a.num;
    return os;
}

zh

class Z
{
public:
virtual Z* aa();
...
};

ああ

class A: public Z
{
private:
int num;
public:
virtual Z* aa();
...
};

そして、これらのエラーが発生しました:

'{' token ( on class A:public Z {) の前に期待されるクラス名 ISO C++ は、タイプのない 'Z' の宣言を禁止します。'Z' は 'virtual' フィールドとして宣言されます。'*' トークンの前 (A のすべての仮想関数)

手伝って頂けますか?

4

1 に答える 1

3

クラス定義の後にセミコロンが必要です。

class A: public Z
{
private:
  int num;
  public:
  virtual Z* aa();
  // ...
}; // <-- SEMICOLON!!1

また、ing inによって、 が定義Zされる前に が定義されていることを確認してください。A#includez.ha.h

于 2012-05-25T18:41:45.280 に答える