基本上,我想使用超类的指针数组并将其用于子类。
我有一个处理几何形式的代码。这是一个“几何形式”超类,由虚拟方法和静态整数组成。
稍后在代码中,我创建继承的类(圆形,正方形..),以补充应用程序。
我想创建一个“几何形式”指针数组,并根据i
的情况将第switch
项(基于静态属性的索引)传递给特定的子功能,负责使用第i
个指针的那个几何图形的方法。
示例:我想使用正方形,因此我通过了menuSquares(geometricFroms *array[foo::getStatic()]){}
...
在该功能内,我想做:
ptrPassed = new Circle();
我该怎么做?
我尝试使用通用int
指针而不是超类类型:
Class GeomFig {};
Class Circle : public GeomFig
{};
int main(){
GeomFig *arrayPtrs[100];
// selection of which shape the user wants to use
// ...
menuSquares(arrayPtrs[GeomFig::getStatic()]) {}...
}
// code def
menuSquares(GeomFig* &geomPtr)
{
geomPtr = new Circle();
}
答案 0 :(得分:1)
您的menuSquares()
的{{1}}参数是通过值 获取的,因此该参数仅对GeomFig*
是局部的,并且在{{1 }}不会被呼叫者看到。
如果您希望调用者看到新的指针值,则需要通过引用传递指针:
menuSquares()
否则,让menuSquares()
在其返回值中返回所需的指针,而不使用输出参数:
void menuSquares(GeomFig* &geomPtr)
{
geomPtr = new Circle();
}