运算符<<使用虚拟课程

时间:2012-05-25 18:37:14

标签: c++

我有一个问题。我有一个类逻辑,有一个字符串和一个对象。我希望当我在逻辑类中编写cout<<a时,此运算符会更改我的字符串。所以我这样做了:

logic.h

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

logic.cpp

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

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

z.h

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

A.H

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

我收到了这些错误:

  

'{'标记(on class A:public Z {)ISO之前的预期类名   C ++禁止声明'Z'没有类型,'Z'声明为   '虚拟'字段,预期';'在'*'标记之前(在每个虚拟标记上)   功能A)

你能帮助我吗?

1 个答案:

答案 0 :(得分:3)

在类定义之后需要一个分号:

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

此外,请Z A #include z.h确定<{em>} a.h之前定义的{{1}}是{{1}}。