在运行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行。
答案 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指针的指针。