class CShape
{
public:
CShape(int pre_location) { location=pre_location; }
~CShape() {}
virtual void display() =0;
char randomchar();
protected:
int location;
};
class CTriangle: virtual public CShape
{
public:
CTriangle(int pre_height, int pre_location): CShape(pre_location) { height=pre_height; }
~CTriangle() {}
virtual void display();
protected:
int height;
};
class CReserveTriangle: public CTriangle
{
public:
CReserveTriangle(int pre_height, int pre_location): CTriangle(pre_height, pre_location) {}
~CReserveTriangle() {}
virtual void display();
protected:
int height;
};
错误
shape.h(28) : error C2512: 'CShape::CShape' : no appropriate default constructor available
queue.cpp
why?
如果在 CShape 的构造函数里面加上 pre_location=0 默认参数就没有错误了,但是我不需要默认参数。
如果加上 CShape(){} 的话,或者设置 pre_location=0 默认参数的话,在程序执行过程中,新建一个 CReserveTriangle 类的对象,如
ptr = new CReserveTriangle(1,2)
执行过程中, CReserveTriangle 里面的 location 就会变成 0。如何设置成 2 呢(就是原来参数里面的数值),难道这个参数是不能连带的吗
慕莱坞森
有只小跳蛙
长风秋雁
相关分类