0

我正在尝试构建一个异构列表,为异构数组动态分配内存。我在进行这项工作所需的声明方面遇到了一些麻烦。到目前为止,我有类似的东西:

class Class1
{
 public:
 Class1 * GetList( int i, Class1& c );
 void Create( int size );

 private:
 Class1 ** list1;
};

class Class2: public Class1
{
  ...
};

Class1 * GetList( int i, Class1& c )
{
  return c.list1[i];
}

void Class1::Create( int size )
{
 list1 = new Class1*[size];
}

int main()
{ 
 Class1 c;
 int size = 0;

 cin >> size;

 c.Create( size );

 for( int i = 0; i < size; i ++ )
 {
    c.GetList( i, c ) = new Class2;

    c.GetList( i, c )->SetParams( some params );  
 }

}

我想知道我是否使用异构列表来动态存储父类的指针并在 main 中正确调用它们。任何帮助将非常感激。

4

1 回答 1

0

根据您的用法并遵循我们在评论中所说的内容,您应该为此更改 GetList :

Class1 *& GetList( int i )
{
 return list1[i];
}

介意&. 否则你的分配使用GetList(i) =...将是无用的。

于 2013-11-19T23:22:52.090 回答