我在 SO 上阅读了一些类似的问题和答案,但并不真正理解那里的答案。我很抱歉,如果这是重复的。
有一个这样的基类。
class CParam
{
public:
virtual void PrintData(ostream &OutStream) = 0;
};
现在我继承了这个:
class CUInt32:public CParam
{
public:
void PrintData(ostream &OutStream);
}
void CUInt32::PrintData(ostream &OutStream)
{
// Write some data to OutStream Here
}
我为 CUInt32 类重载运算符 <<
inline ostream &operator<<(ostream &OutStream, CUInt32 &UInt32Obj)
{
UInt32Obj.PrintData(OutStream);
return (OutStream);
}
在 int main() 函数中,我执行以下操作:
int main()
{
CParam *cp = new CUInt32(ANALOG);
cout << *cp;// Error
return 0;
}
我收到一个错误提示 错误:'std::cout << *cp'| 中的 'operator<<' 不匹配
我的问题是
- 是否可以将多态基类指针与 cout 一起使用?
- 如果是,我们怎么能做到这一点?
谢谢你的时间!