【发布时间】:2013-11-26 23:04:35
【问题描述】:
我有一个名为 Animal.h 的基类
在那里,我有描述动物发出的噪音的纯虚方法,这些噪音被派生类(例如猫/狗)(在它们自己的头文件中)覆盖。
我有一个主类来调用函数并打印出与这些类相关的不同内容。
我正在尝试重载 Animal.h 类中的输入运算符,以让我读取输入并根据输入的内容创建 Animal 类。
例如(在我的主要):
Animal *a = (animal*) 0;
while (read_animal(cin, a) && a)
cout << *a << ’\n’;
在我的 Animal.h 中:
friend istream &operator >>( istream &input, animal* &animal_type )
{
string in;
getline(input, in);
if (in.find("Cat") != std::string::npos)
{
*animal_type = new Cat();
}
return input;
}
但智能感知告诉我:
错误 3 错误 C2061:语法错误:标识符“Cat”
有什么想法吗?
【问题讨论】:
-
应该是
animal_type = new Cat();,我看不出你是如何在这段代码中遇到语法错误的。 -
你
#includeCat.h 了吗?这个类是不是叫Cat,而不是cat? -
Pawel 暗示 C++ 区分大小写。动物和动物不是一回事。
-
如果我去掉 *.也没有 Cat.h 不包括在内,但我认为它不需要?
-
如果你正在使用它完全可以......
标签: c++ pointers operator-overloading overloading