Проблема с VS 2010
Программа на VS 2019 работает без ошибок, но когда загружаешь на VS 2010 выдает ошибку. Вот фрагмент кода:
struct Table //таблица указателей на строку
{
unsigned const int count = 0;
Text_of_line* line_Table = static_cast<Text_of_line*>(malloc(sizeof(Text_of_line)));
void saveTable() //сохранение таблицы в текстовый файл
{
if (count)
{
ofstream fout("table.txt");
for (unsigned int i = 0; i < count; ++i)
{
line_Table[i].line_To_File(fout);
}
}
Выдает такие ошибки:
- error C2864: Table::count: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
- error C2864: Table::line_Table: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
Ответы (1 шт):
Автор решения: Alex F
→ Ссылка
VC++ 1020 не поддерживает такой инициализации. Используйте конструктор:
struct Table //таблица указателей на строку
{
unsigned const int count;
Text_of_line* line_Table;
Table() : count(0)
{
line_Table = static_cast<Text_of_line*>(malloc(sizeof(Text_of_line)));
}
~Table()
{
free(line_Table);
}
void saveTable() //сохранение таблицы в текстовый файл
{
if (count)
{
ofstream fout("table.txt");
for (unsigned int i = 0; i < count; ++i)
{
line_Table[i].line_To_File(fout);
}
}
}
}
Кстати, в C++ лучше использовать new:
line_Table = new Text_of_line;
delete line_Table;
А также: непонятно, почему вы инициализируете line_Table одним элементом, когда count = 0. Логичнее установить его в NULL.