У меня есть следующий код, в котором класс Color вложен в Letter_template< /code> typedef, вложенный в массив из 100 Letter_template:
Код: Выделить всё
#include
#include
#include
// Works on little endian processors which mine happens to be
#define COLOR_PREPEND 0x001b;
class Color
{
private:
char contents[6];
public:
Color() {
short prepend = COLOR_PREPEND;
sprintf(contents, "%s[%dm", (char *)prepend, 0);
}
Color(int code) {
short prepend = COLOR_PREPEND;
sprintf(contents, "%s[%dm", (char *)prepend, code);
}
};
typedef struct {
Color *set;
char c;
Color *reset;
} letter_template;
letter_template essay[100];
int main() {
// Initialize array
for (int i = 0; i < sizeof(essay)/sizeof(essay[0]); i++) {
essay[i].set = new Color(); essay[i].reset = new Color();
}
return 0;
}
Сначала я действительно пытался получить одну длинную непрерывную строку данных в порядке последовательность цветов > буква > последовательность цветов > повторить. Я знаю, что то, что я закодировал, не будет именно этим, однако я не понимаю, по крайней мере, почему это не должно работать.
Я в тупике, потому что мой Цвет определение класса, как вы видите, работало нормально до того, как я поместил его в структуру class и typedef (например, оператор sprintf, как вы видите, работал нормально, когда я только что написал его в основной ). Мой атрибут содержимого имеет 6 байт, и я знаю, что этого достаточно для того, что я там загружаю.
< strong>РЕДАКТИРОВАТЬ:
Я обновил код именно так, как у меня есть, включая недостающие определения и включения. Моя команда компиляции была:
Код: Выделить всё
g++ -c main.cpp -o main.o; g++ main.o -o main.exe
Примечание. Изначально это был код C, поэтому он выглядит как код C. Причина, по которой я использую объекты и вещи C++, заключается в том, что мне нужна была утилита, позволяющая устанавливать и сбрасывать определенные цвета для определенных букв без взлома везде жестко закодированных строк, для чего я хотел использовать классы и методы.
Подробнее здесь: https://stackoverflow.com/questions/786 ... segmentati