Я изучаю С++ в версии от Bloodshed, использующей компилятор Mingw и недавно столкнулся с проблемой – при попытке использования constructor для структуры компилятор выдает ошибку синтаксиса – отсутствует знак ";". Подозреваю, что dev C++ здесь использует несколько другой синтаксис, чем Visual C++ (скоро хочу перейти на него или Borland, но пока нет такой возможности), что и вызывает ошибку, однако не знаю, как ее исправить. Вот мой код:
typedef vector <int> Array;
int main(int argc, char *argv[])
{
struct Data{
Data();
int Age;
string Name;
Array Responces;
};
Data::Data()
: Responces(3, 0)//на этой строке компилятор выдает ошибку
{
}
…
Подскажите, пожалуйста, как исправить этот код. Заранее спасибо!
4 марта 2008 в 10:02
//ru.wikipedia.org/wiki/Инкапсуляция_(программи...
3 марта 2008 в 23:04
struct – это, безусловно, хорошо
но скажи, часто ли оно используется для объявления классов? можно ведь забыть поставить private-модификатор и инкапсуляция пропадет…
3 марта 2008 в 10:00
Хе-хе, то что написано в этих исходниках и является классом. Ключевое слово "struct" не должно сбивать вас с толку.
1 марта 2008 в 21:03
Классы изучать уже начал – просто решил для начала быстренько попробовать структуры)) спс за совет)
1 марта 2008 в 17:05
имхо структуру можно объявлять и внутри функции (давно правда плюсами не пользовался). при этом определение методов должно идти в этом объявлении. т.е. что-нибудь вроде
int main(int argc, char **argv)
{
struct Data{
Data():Responces(3, 0) {};
int Age;
string Name;
Array Responces;
};
…
return 0;
}
ЗЫ: лучше, наверно, исползовать классы – инкапсуляция и все такое…
1 марта 2008 в 5:00
Как глупо… оказалось, что объявлять структуры нужно вне главной функции=)) Как говорится, на ошибках учатся… Вопрос снят) Спасибо, что зашли почитать)))