инициализация массива классов c ++ - PullRequest
2 голосов
/ 20 апреля 2011

поэтому у меня есть этот класс в заголовке

class C{

   int b [2];

   init();

}

и в C.cpp у меня есть

C::init(){

   bK [2] = {3,7};
}

, в результате чего я пытаюсь инициализировать переменную класса b, которая является массивом

но потом компилятор возвращает ошибку expected ; before { token и expected primary expression before { token

что я сделал не так и как правильно инициализировать переменные класса массива?

Ответы [ 5 ]

3 голосов
/ 20 апреля 2011

Завершите определение класса с помощью ;.

class C {

   int b [2];

   init();

};

Кроме того, вы не можете инициализировать такой массив вне объявления в стандарте C ++.

1 голос
/ 20 апреля 2011

Это не разрешено Стандартом (2003). Массивы, объявленные в классе, не могут быть инициализированы.

Что вы можете сделать, это:

C::init(){
   b[0] = 3;
   b[1] = 7;
}

В C ++ 0x вы можете сделать это (если вы решите использовать std::vector):

class C
{
   std::vector<int> b;
   void init() 
   { 
       b = {3,7}; 
   }
};

См. Онлайн-демо: http://www.ideone.com/NN5aT

1 голос
/ 20 апреля 2011

Вы не можете сделать это в pre-C ++ 0x C ++.

0 голосов
/ 20 апреля 2011

Вы должны объявить своих учеников публичными, частными или защищенными.А также вам нужен тип возвращаемого значения для init ().Вам также может понадобиться точка с запятой в конце определения класса, чего нельзя сделать с членами класса c ++.

Вы должны использовать конструктор вместо init ().Таким образом, вам не нужно вызывать init () после каждого объявления объекта, это будет сделано за вас.обнаружил, что это глючит.Этот код выше не имеет ошибок в нем.Если вы хотите встроить инициализировать весь массив, это должно быть сделано в его объявлении.

0 голосов
/ 20 апреля 2011
C::init(){

   bK [0] = 3;
   bk [1] = 7;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...