2016-10-13 2 views
-1

я в настоящее время переживает Бьярне Страуструпа «++ Язык программирования С (4-е издание)» и я пытаюсь понять, является ли следующее синтаксической ошибки или был его путь Я скомпилировал его.Определение конструктора класса в C++

Согласно следующему фрагменту коды (извлеченной из книги), мой конструктор должен выглядеть следующим образом:

class Vector { 
public: 
    Vector(int s): elem{new double[s]}, sz{s} {} // Construct a Vector 
    ... 
private: 
    double* elem; // Pointer to the elements 
    int sz;  // The number of elements 
}; 

Но я не могу скомпилировать его, если я не изменить следующий согласно предложению сообщение об ошибке:

Vector(int s): elem(new double[s]), sz(s) {} 

Примечание: Я скомпилировал мои C++ коды с помощью следующей команды через Mac Terminal:

g++ -ansi -pedantic -Wall Test.cpp -o Test.o 

Спасибо заранее.

+2

[Без рекламы] (http://coliru.stacked-crooked.com/a/60e9110e109953e2). Какова версия вашего компилятора? –

+0

Почему вы инициализируете elem в инициализации члена класса? – Raindrop7

+0

@ Raindrop7 Почему нет? –

ответ

2

Возможно, все, что вам нужно сделать, это собрать его для C++ 11:

g++ -std=c++11 -ansi -pedantic -Wall Test.cpp -o Test.o 

Как @molbdnilo отметил в комментарии, удалить -ansi из команды, потому что это синоним std=c89 или std=c++98.

g++ -std=c++11 -pedantic -Wall Test.cpp -o Test.o 
+0

Я пробовал эту команду, но я все равно получаю то же сообщение об ошибке, в котором он ожидает '(' вместо '{'. – Maxwell

+1

. Вы не хотите там '-ansi'. – molbdnilo

+0

Спасибо, @molbdnilo! Это делает трюк! P/S: Как я могу проголосовать за ваш комментарий? Я пробовал навести курсор на комментарий, но ничего не всплывает ... – Maxwell

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