Проблема с 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);
            }
        }

Выдает такие ошибки:

  1. error C2864: Table::count: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
  2. 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.

→ Ссылка