【发布时间】:2018-03-31 22:56:07
【问题描述】:
我正在尝试打印枚举类(将使用某种地图来打印汽车、房屋)。
在下面的代码中,我应该在哪里将函数粘贴到运算符重载
PS:这是一个人为的例子。
#include <iostream>
#include <vector>
#include <memory>
enum class property_type {CAR, HOUSE};
class Property
{
public:
virtual property_type type() = 0;
};
class Car : public Property
{
public:
Car(std::string name) : mName(name) {}
std::string mName;
property_type type() {return property_type::CAR;}
};
class House : public Property
{
public:
House(std::string name) : mName(name) {}
std::string mName;
property_type type() {return property_type::HOUSE;}
};
class Person
{
public:
std::vector< std::shared_ptr<Property> > properties;
};
int main()
{
Person x;
auto y = std::shared_ptr<Property>(new Car("my car"));
auto z = std::shared_ptr<Property>(new House("my house"));
x.properties.push_back(y);
x.properties.push_back(z);
for (auto i : x.properties) {
std::cout << i->type() << std::endl;
}
return 0;
}
【问题讨论】:
-
编译后的代码不存储枚举名称。
-
我会摆脱
property_type(除非我有其他用途)并按照以下方式做一些事情:stackoverflow.com/a/19378656/4581301
标签: c++