2014-01-19 6 views
2

Я хотел, чтобы инициализировать некоторые членов класса, и я получаю ошибку "expected parameter declarator" (с использованием лязга ++) при использовании г ++ "expected identifier before numeric constant". Так что я снова читать инициализацию класса, и я пишу код ниже:инициализации класса Паренса использовать

#include <stdio.h>  
class AAA{ 
public: 
    int l; 
    AAA(int i){l=i;} 
}; 

class BBB{ 
    bool normal; 
    AAA aaa=10; 
    AAA bbb(20); 
    AAA ccc{30}; 
    AAA ddd={45}; 
}; 

int main(int argc, char **argv){printf("hello world\n");return 0;} 

Похоже, что синтаксис AAA bbb(20) не принимается!

Это нормально? (Я использую параметр -std = C++ 11).

Или я пропустил какой-то пункт?

+0

использовать 'AAA bbb {20};' тоже. – Netwave

ответ

8

Это нормально. C++ 11 не допускает скобки () при инициализации нестатических данных на месте. Это делается для того, чтобы избежать возможных анализов как функций. Вы могли использовать () perantheses с этим синтаксисом:

AAA bbb = AAA(20); 

, потому что эта форма не может быть проанализирован как функция.

Смежные вопросы