【发布时间】:2012-01-07 08:29:42
【问题描述】:
我的问题是,我有一个派生类的基类。我在基类中有一个重载的 += 运算符,但我只想能够添加相同类型的派生类。我通过返回 lhs 并在它们不是同一类型时生成警告消息来做到这一点。
class base{
int variable;
public:
base(int v);
base & operator+=(const base & rhs);
class a: public base{
}
class b: public base{
}
base & operator+=(const base & rhs){
if(type_same(const & rhs){
variable+=rhs.variable; }
return *this
}
a first(1);
a second(5);
b third(2);
first+=second // first.variable now =6
second+=third // warning produced second.variable still = 5
我以前从未使用过动态转换,所以我的问题是是否可以/建议使用它和 typeid 来检查传递的类型是否相同。我的替代方案是每个派生类的字符串常量名称。
【问题讨论】:
-
huh - 代码是一个很大的语法错误。另外,
type_same是在哪里定义的?最后,在编程错误(如不匹配的类型)上静默发出警告似乎是一个非常糟糕的主意。改为抛出 runtime_error? -
这只是试图使我的问题尽可能清晰的伪代码。这比从我的实际代码中复制和粘贴所有不同的小相关位要容易。
标签: c++ polymorphism