我有一个几何对象的基类,我自己使用但我也希望将该类继承到另一个类,它是对象的高级版本,因为它们共享很多逻辑.基础对象有几个静态创建方法(由于参数冲突不能使用new),我不想继承那些.我能否以某种方式指定那些不被继承的东西?
编辑:包括一个例子
struct Banana {
float length;
Banana() {}
Banana(float length) {
this->length = length;
}
static Banana CreateByHalfLength(float halfLength) {
return Banana(halfLength * 2);
}
};
struct AdvancedBanana : Banana {
float bendAmt;
AdvancedBanana(float length, float bendAmt) {
this->length = length; this->bendAmt = bendAmt;
}
};
Run Code Online (Sandbox Code Playgroud)
我不希望AdvancedBanana :: CreateByHalfLength存在,而我希望Banana :: CreateByHalfLength存在并且可以从类外部访问.
尝试将此函数红色声明为子函数中的私有函数:
#include <iostream>
class Banana {
public:
float length;
float getLenght(){
return length;
}
void setLenght(float value){
length = value;
}
Banana() {}
Banana(float length) {
this->length = length;
}
static Banana CreateByHalfLength(float halfLength) {
return Banana(halfLength * 2);
}
};
class AdvancedBanana : public Banana {
public:
float bendAmt;
AdvancedBanana(float length, float bendAmt) {
this->length = length; this->bendAmt = bendAmt;
}
private:
static AdvancedBanana CreateByHalfLength(float halfLength);
};
int main()
{
// work
Banana a(1);
a.CreateByHalfLength(1);
AdvancedBanana b(0,1);
//will fail
// b.CreateByHalfLength(1);
};
Run Code Online (Sandbox Code Playgroud)