У меня есть следующий код, в котором класс Color вложен в typedef Letter_template, который далее вложен в массив из 100 Letter_template:
Код: Выделить всё
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;
}
Сначала я действительно пытался создать одну длинную непрерывную строку данных в порядке последовательность цветов > буква > последовательность цветов > повтор, Я знаю, что то, что я закодировал, не будет именно этим, однако я не понимаю, почему это, по крайней мере, не должно работать.
Я в тупике, потому что мое определение класса Color как вы видите, что он работал нормально до того, как я поместил его в структуру class и typedef (например, оператор sprintf, как вы видите, работал нормально, когда я только что написал его в main). Мой атрибут «contents» имеет 6 байт, и я знаю, что этого достаточно для того, что я там делаю.
Подробнее здесь: https://stackoverflow.com/questions/786 ... segmentati