У меня тяжелое время с ошибкой, которая появляется. Это домашнее задание, и большая его часть включена в отдельный файл .h, поэтому я не буду публиковать весь код, чтобы сохранить неповрежденным. Вот соответствующие части:Ошибка: ожидаемое первичное выражение перед ']' токен (C++)
// В .h:
class array_list
{
private:
unsigned int * m_storage;
// points to current position in the list
// in documentation # marks the current position in the list
// ie. if l={#1,2,3} the 1 is the current position in the list
// if l={1,2,#3} the 3 is the current position in the list
// the # is ONLY for documentation purposes
unsigned int m_current;
unsigned int m_size;
unsigned int m_capacity;
// и т.д.
// Руководство:
// Construct a new, empty list.
//
// Pre-conditions:
// none
// Post-conditions:
// m_storage is initialized to point to an array of size INIT_SIZE
// m_capacity is initialized to INIT_SIZE
// m_current is set to -1
// m_size is set to 0
// То, что я написал :
array_list::array_list()
{
int arrayOf[INIT_SIZE];
m_storage = arrayOf[]; /* <---THE PROBLEM LINE */
m_capacity = INIT_SIZE;
m_current = -1;
m_size = 0;
}
По какой-то причине я получаю ошибку th в компиляторе ожидалось первичное выражение перед маркером ']' в указанной строке. Я прошел через свои заметки и сделал несколько Googling, и действительно кажется, что это способ объявить массив и указать на него с заранее определенным указателем, нет? Может ли кто-нибудь помочь мне исправить это? Спасибо.
'm_storage = (unsigned int *) arrayOf'. Почему вы чувствуете, что вам нужна эта пустая пара скобок? Это недопустимый синтаксис. И сделайте 'arrayOf' массив' unsigned int' (или 'm_storage'' '' int * '), так что вам не нужен бросок. О, и 'arrayOf' будет уничтожен, когда конструктор вернется, оставив' m_storage' висячий указатель. –
Почему вы все равно создаете локальный массив? Если вы не просто m_storage = new unsigned int [INIT_SIZE]; ' –