Невозможно вывести значение красного / зеленого / синего цвета объекта - PullRequest
0 голосов
/ 31 января 2020
vector<Text> Game_Text;

Game_Text.push_back(Text("0",Game_Font[0],50));

cout<<Game_Text[0].getFillColor().r<<endl;

Использование C ++ 11 в Code :: Blocks

Ничего не выводится при запуске, не должно ли выводиться 255? Если Game_Text[0].getFillColor().r заменен, скажем, "test", он выводит test как обычно. Нет ошибок, полный код работает.

Можно ли с помощью этого метода вывести только одно значение r / g / b объекта?

1 Ответ

1 голос
/ 31 января 2020

Элемент Color r относится к типу Uint8, который является псевдонимом для unsigned char.

И char (а также signed char и unsigned char и все псевдонимы на основе этих типов) обрабатываются как символы оператором вывода <<.

Следовательно

cout<<Game_Text[0].getFillColor().r<<endl;

попытается напечатать r как символ . Если его значение не соответствует печатному символу, ничего не будет напечатано.

Чтобы напечатать целочисленное значение, вам необходимо привести его к целочисленному типу, который не основан на char:

cout << static_cast<unsigned>(Game_Text[0].getFillColor().r) << '\n';
...