2015-10-27 2 views
-2

Я делаю с некоторыми одноклассниками проект для анализа выступлений сети Clos в C++. Мы столкнулись со следующей проблемой:Ошибка в создании вектора объектов

static const int dim = 3; 
packet **pack; 
pack = new packet*[dim]; 
for (int i=0; i<dim; i++) 
    pack[i]=new packet(); 

Эти несколько строк генерировать эти сообщения об ошибках

enter image description here

+0

Что вы пытаетесь достичь с помощью этого кода? когда у вас более одного «*» в C++, вы делаете что-то неправильно. Вы используете C++ 11? используйте интеллектуальные указатели, а не необработанные указатели. – Heto

ответ

0

Первая очевидная вещь, которую я вижу от ошибок компилятора, похоже, он не признает packet как тип ,

Следующее, что меня поразило, это то, что эти ошибки генерируются из файла с именем «event.h», а не единицы компиляции. Является ли ваш код в файле заголовка? Этот код не принадлежит одному, но должен находиться в блоке компиляции. Мы не можем видеть контекст вокруг него. Он принадлежит функции, а не определению класса.

Класс «пакет» также должен быть полным типом, а не объявленным вперед.

Вы должны, однако, конечно, с использованием вектора как в std::vector и управлять указатели в нем shared_ptr или unique_ptr, если вы не собираетесь иметь вектор объектов, т.е. vector<packet>

Предположительно, packet определяется в заголовок. Блок компиляции с кодом в вашем примере должен включать этот заголовок.

+0

Пакет был создан в этом пакете класса путь { общественности: \t пакет(); \t ~ packet(); \t int in, out; \t двойной темп; \t double get_time(); \t int get_in(); \t int get_out(); \t void inizializza(); }; – Andre991

+0

Да, но если он определен в заголовке, является ли ваш блок компиляции, включая этот заголовок? – CashCow

+0

Да, это :( Я использую CodeBlocks, однако, если полезно знать – Andre991