异构列表和DMA

时间:2013-11-19 22:16:00

标签: c++ heterogeneous

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

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中调用它们。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

注意&。否则,使用GetList(i) =...的作业将毫无用处。