неразрешенный внешний символ "public: __thiscall Table :: ~ Table (void)" (?? 1Table @@ QAE @ XZ), на который ссылается функция _main
Это означает именно то, что сказано.
"неразрешенный" = "не найден".
"внешний символ" = "определение функции".
Он ищет деструктор - важная часть - «Table :: ~ Table».
Ваше определение класса относится к деструктору, но не реализует его. Ни один не делает файл реализации. Поскольку вы ссылались на деструктор, компилятор не сделает для вас обычный автоматический ничего не делать. Деструктор вызывается в main (), потому что вы создаете экземпляр в main (), а деструктор необходим для его очистки в конце main ().
Кстати, ваш конструктор фактически не инициализирует данные в таблице. Он создает локальный массив с именем start
, который затем быстро отбрасывается, оставляя члена в покое.
Вы не сможете просто назначить из строки член массива. Вам нужно будет использовать функцию копирования, такую как std :: copy:
Table::Table() {
char* alphabet = "ABCDEFGHIJKLMNOPRSTUVWXYZ";
std::copy(alphabet, alphabet + 26, start); // std::copy comes from <algorithm>.
}