3

Ubuntu 11.04、G++、freeglut 和 GLUT。

我完全不明白这一点。这是我得到的错误:

whatever.cc:315:59: error: cannot convert ‘std::string’ to ‘const unsigned char*’ for argument ‘2’ to ‘void glutStrokeString(void*, const unsigned char*)’

如果我尝试 glutBitmapString:

whatever.cc:315:59: error: cannot convert ‘std::string’ to ‘const unsigned char*’ for argument ‘2’ to ‘void glutBitmapString(void*, const unsigned char*)’

这是相关的代码(我认为)。

scoreStream << "Score: " << score << "\0";
scoreString = scoreStream.str();

// ...in another method:

glRasterPos2i(0, 0);
glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, scoreString);

这个答案告诉我它应该可以工作,但事实并非如此。

给不想跳的人的报价:

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the
// screen in an 18-point Helvetica font
glRasterPos2i(100, 120);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");

(另外,我尝试在其中留下一个直接字符串,如“要渲染的文本”。没有骰子。)

whatever.cc:315:64: error: invalid conversion from ‘const char*’ to ‘const unsigned char*’

我很困惑。据我所知,这是我关于 SO 的第一个问题,如果没有很好地放在一起,请道歉。我会提供任何我能提供的额外信息。

4

1 回答 1

5

没有从std::stringa 到 a 的自动转换char const*。但是,您可以使用std::string::c_str()char const*摆脱std::string.

例如glutBitmapString(GLUT_BITMAP_HELVETICA_18, scoreString.c_str());

注意:您链接到的答案并没有说您可以使用std::string. 它给出的示例 ( glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");) 使用字符串文字,它是 的数组char,而不是std::string.

请记住,OpenGL 是一个 C 库,std::string在 C 中不存在。

于 2011-06-27T22:59:13.763 回答