重载new的问题
class C: public A, public B // A和B都重载了new
...
main()
{
new C; // 二义性错误,怎么改这里?
}
----------------
有没有A::new之类的语法?
[解决办法]
既然A/B都重载了new,C当然更加要重载new。
不要挑战编译器或者自己的大脑。
[解决办法]
试试看。
A* ap;
C* cp
ap = new C;
然后再转换 ap为cp;
看看这样调用的是否是A里面的new、
[解决办法]
修改 C
class C: public A,B
{
public:
A::operator new;
protected:
private:
};
之后 C的new就使用的是A的new
[解决办法]
既然两个父类都重载了new,那么这个子类如果不重载的话,你觉得你这个子类符合LSP原则的可能有多大?
[解决办法]
我记得学C++的书里有解决二义性的例子的。不过现在忘得怎么做了。
[解决办法]
你的子类再重载一下operator new,实现应该实现的正确操作,然后就不会出现二义性了啊
[解决办法]
多态哇
[解决办法]
:)