【发布时间】:2012-12-06 18:54:59
【问题描述】:
对不起,我对 C++ 很陌生,这种事情可能吗?
我有一个超类,它有一个巨大的构造函数,所以我创建了一个静态工厂类型构造函数,它会做一些工作,然后返回 new ParametricShape(blah blah blah...);
class ParametricShape: public ModelView{
public:
//actually has 15 arguments didn't want to type them all up
ParametricShape(func x, funcy, funcz, float lu, float hu, float lv, float hv, int sv, int su);
static ParametricShape* makeDonutShape(float);
}
稍后我想在扩展类中使用这个静态方法。
class Donut : public ParametricShape{
Donut();
}
Donut::Donut(){
this = ParametricShape::makeDonut(1.0f);
}
这就是我正在尝试做的事情,我一直在摸索各种复制构造函数,但又遇到了各种不同的错误。目前它只是说:左值需要作为赋值的左操作数。感谢您的帮助!
【问题讨论】:
-
为什么你想要那个?这没有意义......?!
-
您不能修改
this指针。相反,重写“make...”方法:它们不应该返回新实例,而是修改现有实例。另外,我认为您不想在您的情况下覆盖形状类,因为您没有引入任何新成员,而仅提供参数函数的创建例程 -
@KerrekSB 因为我想扩展参数形状以使其始终看起来像一个甜甜圈并在渲染中覆盖其他一些东西等我能做的事情非常有限,因为我得到了一个模型视图类带有我不允许更改的隐私/受保护的东西。
标签: c++ factory copy-constructor