我具有这样的函数:
void getSprite(string *spriteLines[SPRITE_YSIZE]);
,然后我会呼叫这样的功能:
int main() {
string *spriteLines[SPRITE_YSIZE];
getSprite(spriteLines);
在这里,一切正常。但是我决定将Spritelines声明为字符串,而不是指针,因此我更改了代码:
int main() {
string spriteLines[SPRITE_YSIZE];
getSprite(&spriteLines);
出现错误:
error: cannot convert ‘std::__cxx11::string (*)[5] {aka std::__cxx11::basic_string<char> (*)[5]}’ to ‘std::__cxx11::string** {aka std::__cxx11::basic_string<char>**}’ for argument ‘1’ to ‘void getSprite(std::__cxx11::string**)’ getSprite(&spriteLines);
你们中有人知道为什么吗?我听不懂。
额外的数据:我正在使用Eclipse氧V1和GNU G 。
在第一个示例中,您声明了字符串指针数组。在第二个示例中,您声明了一系列字符串。两个阵列都将您的功能作为指针传递。您的错误之所以发生,是因为它们是不同的"类型"。
在第二个示例中,您需要将getprite函数更改为:
void getsprite(字符串Spritelines [sprite_ysize](