创建一系列超类的指针,以分配继承的类
Create an array of pointers of a superclass to heap allocate inheritted classes
基本上,我想使用一系列超级类的指针并将其用于子类。
我有一个操纵几何形式的代码。这是一个"几何形式"超类,由虚拟方法和静态ints组成。
稍后在代码中,我创建了继承的类(圆,正方形..(,补充了应用程序。
我想创建一个"几何形式"指针的数组,然后将i
'TH项目(基于静态属性索引(传递给特定的子功能,基于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();
}
您的 menuSquares()
正在将其GeomFig*
参数按值进行,因此该参数仅是menuSquares()
的本地,并且在menuSquares()
中分配给它的任何东西都不会看到呼叫者。
如果您希望呼叫者看到新的指针值,则需要通过Reference 将指针传递:
void menuSquares(GeomFig* &geomPtr)
{
geomPtr = new Circle();
}
否则,让menuSquares()
在其返回值中返回所需的指针,而不是使用输出参数:
GeomFig* menuSquares()
{
return new Circle();
}
...
arrayPtrs[GeomFig::getStatic()] = menuSquares();
相关文章:
- 是否应该使用继承来减少内存消耗的实例的内存分配?
- 动态分配的属性和继承
- 创建一系列超类的指针,以分配继承的类
- 如何将从C 模板继承的类超载分配运算符
- 复制构造函数继承动态分配的数组
- 如何<base>从多个继承的类对象分配unique_ptr?
- 避免使用组合进行额外的堆分配(过度继承)
- 为什么GCC警告使用STD ::元组和虚拟继承来调用非平凡的动作分配运算符
- 超载分配运算符的继承
- 正确的语法,用于在C 中继承,并具有初始化列表和内存分配
- 自定义内存分配和多个继承类的解除分配
- 分配同一类时上层类和继承类之间的区别
- 继承下基类的OOPS内存分配
- 在堆栈上分配对象时发生C++继承错误
- 如何查找继承类的分配地址
- 尝试分配值时C++继承中断的代码
- 在实现中,继承是来自连续分配的多个层的数据成员
- C++ABC,继承和虚函数的分配,试图找出一个段错误等等
- 静态分配继承对象的数组
- 无法从继承的类分配指向方法的指针