2
main.cpp:561:80: error: request for member ‘c_str’ in ‘str’, which is of non-class type ‘std::string [10] {aka std::basic_string<char> [10]}’
   displayFont.showHighscore[i] = TTF_RenderText_Solid(displayFont.menuFont,str.c_str(), displayFont.colorText);

大家好!

根据这个函数,这显示了从成员类中检索到的数据的排名。这也使用了另一个类(displayFont)的ttf内容。当我编译这个时,说一个错误。我留下代码:

void showHighscore() {

    displayFont.menuFont = TTF_OpenFont("fonts/Lanehum.ttf",25);
    displayFont.colorText = { 255, 255, 255 }; // Add content

    stringstream texting[10]; // Variables
    string str[10];
    SDL_Rect posHighscore[10];

    for (int i = 0; i < 10; i++) {
        texting[i] << i << "#    - " << dat.topScore[i];
        str[i] = texting[i].str();
        displayFont.showHighscore[i] = TTF_RenderText_Solid(displayFont.menuFont,str.c_str(), displayFont.colorText); // OUTPUTTING ERROR :/
        posHighscore[i].x = 50; 
        posHighscore[i].y = 50 * (i+1);
    }

    while (true) {
        for (int i = 0; i < 10 ; i++) {
            SDL_BlitSurface(displayFont.showHighscore[i],NULL,screen,&posHighscore[i]);     
        } // Show the rendered text

        SDL_Flip(screen);
        SDL_Delay(5000);
        break;
    }
}
4

3 回答 3

3

str是一个数组string

 string str[10];

所以你不能打电话str.c_str()。您需要在strig 的一个元素上调用它,并带有一个索引:

str[i].c_str()
于 2013-07-18T10:23:38.560 回答
0

你根本不需要数组:

stringstream texting;
texting << i << "#    - " << dat.topScore[i];
displayFont.showHighscore[i] = TTF_RenderText_Solid(displayFont.menuFont,
                                                    texting.str().c_str(),
                                                    displayFont.colorText);
于 2013-07-18T10:33:29.070 回答
0

或者你也可以试试string opt(str);它实际上会存储 in 的值,stropt可以调用它opt.c_str()

于 2020-04-15T20:10:06.070 回答