我在2小时前看到了一个帖子,是关于我几天前遇到的一个问题,我也在寻找一个解释…
https://stackoverflow.com/questions/25281294/c-cout-float-fail-while-printf-do-the-job我在cout中遇到了完全相同的行为,它根本不喜欢float…
我有一个单独的线程userinterface,用openGL,与一个回调函数附加在一个按钮在我的主线程。
class ObjectA//My class
{
private:
float light;
float surface;
float height;
public:
ObjectA();
~ObjectA();
float r_light();
float r_surface();
float r_height();
void render(int x, int y); // Not implemented when bug occured
}
ObjectA::ObjectA(void)
{
light = 0;
surface = 0;
height = 0;
}
float ObjectA::r_light()
{
return this->light;
}
void displayResult(ObjectA * a) //The callback function attached to the UserInterface-button
{
cout << a->r_light() << endl;
}
当我运行它时,程序严重崩溃,我不得不手动完成这个过程…我唯一的解决方案是用printf代替cout,但是我不太喜欢这样。
有人知道为什么我不能计算这个值吗?
我知道了,我的一个朋友也有同样的问题。
_setmode(_fileno(stdout), _O_TEXT);
并恢复正常行为。他在告诉我一些关于一个该死的vc++编译器和openGL旧版本的事情。(Init openGl world螺丝stdout以某种方式,如果我理解)