我目前正在开发一款卡牌游戏,但是我在一些初始化代码方面遇到了问题:
// in my class...
Card cards[20];
// in method...
for(int i = 0; i <= 20;i++)
cards++ = new Card(i, /*i as char +*/ "_Card.bmp");
我的编译器报错,指出cards++
不是一个左值。我了解了指针和数组的等价性,并且我认为我已经理解了它,但是我无法让它工作。我的理解是,由于cards
会降级为指针,而new
运算符会给我返回一个指向Card新实例位置的指针,所以上面的代码应该可以编译通过,对吧?我也尝试使用下标,但是
cards+i
、cards++
和cards[i]
不就是三种说同一件事的方法吗?我认为它们都是左值并被视为指针。