Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2010, 17:10   #1
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию Классы, конструкторы

Добрый день!

Следующий код

Код:
class A
{
private:
   bool b1;
   bool b2;
   bool b3;
public:
   A(bool flag)
   :b1(flag)
   ,b2(false)
   ,b3(false)
   {}
   ~A();
   ...
};

class C
{
public:
   C()
   :a1(true)
   ,a2
   {}  // <-- В этом месте.
   ~C();
   A a1;
   A a2;
   ...
};
выдает ошибку:
Цитата:
error C2512: 'C' : no appropriate default constructor available
Что компилятору не нравится?
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 28.01.2010, 17:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Догадка:
Код:
class C
{
public:
   A a1;
   A a2;
   C()
   :a1(true)
   ,a2
   {}  // <-- В этом месте.
   ~C();
   ...
};
Судя по классу А
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2010, 17:20   #3
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Нет, не в этом дело.

Дело в том, что у меня не был предусмотрен конструктор по умолчанию в классе А.

Если переписать:

Код:
class C
{
public:
   C()
   :a1(true)
   ,a2(false)
   {}  // <-- В этом месте.
   ~C();
   A a1;
   A a2;
   ...
};
то все будет ОК
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 28.01.2010, 17:21   #4
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от nazavrik Посмотреть сообщение
Добрый день!

Следующий код

Код:
class A
{
private:
   bool b1;
   bool b2;
   bool b3;
public:
   A(bool flag)
   :b1(flag)
   ,b2(false)
   ,b3(false)
   {}
   ~A();
   ...
};

class C
{
public:
   C()
   :a1(true)
   ,a2
   {}  // <-- В этом месте.
   ~C();
   A a1;
   A a2;
   ...
};
выдает ошибку:


Что компилятору не нравится?
Автор a2 ничем не инициализируется, хотя должна, ибо она стоит в списке предварительной инициализации!!!
А вообще такой стиль написания кода - прямо тошнит, обязательно было столько раз интер тыкать?
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 28.01.2010, 17:22   #5
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от nazavrik Посмотреть сообщение
Нет, не в этом дело.

Дело в том, что у меня не был предусмотрен конструктор по умолчанию в классе А.

Если переписать:

Код:
class C
{
public:
   C()
   :a1(true)
   ,a2(false)
   {}  // <-- В этом месте.
   ~C();
   A a1;
   A a2;
   ...
};
то все будет ОК
Тогда просто убери их из списка, эти переменные, вот так
Код:
C() //т.е не пиши двоеточие, либо только одну нужную переменную!
{}
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 28.01.2010, 17:25   #6
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Цитата:
А вообще такой стиль написания кода - прямо тошнит, обязательно было столько раз интер тыкать?
В этом конкретном примере нет. Но так как писалось с образа и подобия реальной задачи, где количество передаваемых и инициализируемых параметров значительно больше, то в таком случае это значительно упрощает чтение кода.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 28.01.2010, 17:29   #7
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от nazavrik Посмотреть сообщение
В этом конкретном примере нет. Но так как писалось с образа и подобия реальной задачи, где количество передаваемых и инициализируемых параметров значительно больше, то в таком случае это значительно упрощает чтение кода.
Ну я не знаю, пусть тут есть доля правды, но вот запятые в начале строки оправдать никак нельзя 100%
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструкторы и классы С++ Lioness Помощь студентам 12 06.11.2011 09:50
Классы. Конструкторы и деструкторы. Freddy_Krueger Помощь студентам 1 29.11.2009 13:12
Конструкторы С++ Билдер prikolist Общие вопросы C/C++ 5 02.05.2009 17:40
Конструкторы и деконструкторы Элодар Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 11.02.2009 10:25
Конструкторы Лорд Общие вопросы C/C++ 1 21.12.2008 18:35