Попытка инициализировать объекты класса, вложенные в определение типа, вызывает ошибки сегментации?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Попытка инициализировать объекты класса, вложенные в определение типа, вызывает ошибки сегментации?

Сообщение Anonymous »

Я пытаюсь создать программу на C++, которая печатает текст на терминале разными цветами.
У меня есть следующий код, в котором класс 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;
}
Ошибка сегмента происходит в первом цикле цикла for, и с помощью отладчика я заметил, что содержимое каждого члена «эссе» имело нулевые значения (0x0) как для «set», так и для «set». " и атрибуты "reset", поэтому я думаю, что он не смог инициализировать объекты Color. Хотя я не могу понять, почему.
Сначала я действительно пытался создать одну длинную непрерывную строку данных в порядке последовательность цветов > буква > последовательность цветов > повтор, Я знаю, что то, что я закодировал, не будет именно этим, однако я не понимаю, почему это, по крайней мере, не должно работать.
Я в тупике, потому что мое определение класса Color как вы видите, что он работал нормально до того, как я поместил его в структуру class и typedef (например, оператор sprintf, как вы видите, работал нормально, когда я только что написал его в main). Мой атрибут «contents» имеет 6 байт, и я знаю, что этого достаточно для того, что я там делаю.

Подробнее здесь: https://stackoverflow.com/questions/786 ... segmentati
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»