我有这样的功能:
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 Oxygen v1和GNU G ++。
答案 0 :(得分:0)
在第一个示例中,您声明了一个字符串指针数组。在第二个示例中,您声明了一个字符串数组。两个数组都作为指针传递给你的函数。您的错误发生是因为不同的&#34;类型&#34;。
在第二个示例中,您需要将getSprite函数更改为:
void getSprite(string spriteLines [SPRITE_YSIZE])