使用C ++中的指针和函数时出现问题

时间:2018-02-22 17:58:30

标签: c++ eclipse pointers

我有这样的功能:

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 ++。

1 个答案:

答案 0 :(得分:0)

在第一个示例中,您声明了一个字符串指针数组。在第二个示例中,您声明了一个字符串数组。两个数组都作为指针传递给你的函数。您的错误发生是因为不同的&#34;类型&#34;。

在第二个示例中,您需要将getSprite函数更改为:

void getSprite(string spriteLines [SPRITE_YSIZE])