当我在“新”任务中“无法将X **转换为X *”时,这意味着什么?

时间:2009-10-03 02:53:02

标签: c++

在运行Ubuntu和g ++编译器时,我不断从这段代码中得到同样的错误。

 myClass *arr;
 arr = new myClass*[myClassSize]; // line 24
 for(int a = 0;a<myClassSize;a++) 
   arr[a] = new myClass;

这是错误:

cannot convert 'myClass **' to 'myClass *' in assignment 

问题出在第24行。

3 个答案:

答案 0 :(得分:7)

*声明中需要额外arr

myClass** arr;

您似乎正在尝试创建一个指针数组,但type*只是指向type / type数组的指针。

答案 1 :(得分:1)

您将arr声明为指向myClass的指针。 arr[a]是一个解除引用;它与*(arr+a)相同,它是对myClass的引用,而不是指针。

答案 2 :(得分:-2)

它表示你试图将myClass **分配给myClass *意味着没有强制转换是不允许的。从它的外观来看,有问题的代码行应该是

arr = new myClass[myClassSize];//note the lack of star

这会创建一个myClass对象数组。

c ++中的数组和指针之间存在一定的歧义,因此在这种情况下,new返回的数组已经能够分配给指针。

如果你想制作一个指针数组,那么你需要在arr的def上加倍星形来制作一个指向myclass指针的指针。