使用虚拟类的运算符<<
Operator << with virtual classes
我有一个问题。我有一个类逻辑,有一个字符串和一个对象。我希望当我在逻辑类中写入cout<<a
时,这个运算符会更改我的字符串。所以我这样做了:
逻辑.h
class logic
{
private:
int str;
A a;
public:
...
};
逻辑.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)
你可以帮我吗?
类定义后需要一个分号:
class A: public Z
{
private:
int num;
public:
virtual Z* aa();
// ...
}; // <-- SEMICOLON!!1
此外,请确保在定义A
之前定义Z
,方法是在 a.h
中#include
ing z.h
。
相关文章:
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- C++:从抽象类重写纯虚拟运算符重载
- 虚拟超载运算符>>和<<
- 冲突的 CLANG"虚拟 dtor"和"已弃用的复制运算符"警告
- 如何将运算符重载为虚拟运算符
- 使用范围解析运算符时,在构造函数中调用虚拟方法是否安全?
- 基类和派生类的虚拟插入运算符重载
- 重载纯虚拟运算符
- 具有虚拟赋值运算符的多态性
- C++ 中的纯虚拟赋值运算符
- 超级多重非虚拟继承中基类的作用域运算符
- 如何使用虚拟后缀运算符解决切片问题
- 为什么GCC警告使用STD ::元组和虚拟继承来调用非平凡的动作分配运算符
- 我无法让这个虚拟模板化函子运算符返回正确的类型
- 是否可以完全模拟虚拟运算符++(int)?
- 从 STL 容器继承并删除"新"运算符以防止由于缺少虚拟析构函数而导致未定义的行为是否有意义?
- C++抽象基类,具有纯虚拟运算符+函数
- 虚拟运算符重载
- CUDA错误-虚拟函数,继承,NEW运算符
- 如何在c++中覆盖此虚拟运算符