powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегруженный конструктор
7 сообщений из 7, страница 1 из 1
Перегруженный конструктор
    #34381435
dimadv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема следующая, класс содержит член - ссылку, есть два конструктора, различаются одним параметром, а так все одинаково, при попытки использовать во втором конструкторе, первый, выдается следующее сообщение
no appropriate default constructor available
что не верно, очень не хочется переписывать одно и тоже два раза, или даже больше.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class A
{
private: 
     ClassB& m_cMember;
public:
     A(ClassB& _B);
     A(ClassB& _B, int _iCount)
}

A::A(ClassB& _B):m_cMember(&_B)
{ .... }
A::A(ClassB& _B, int _iCount)
{
    A(_B);
    ......
}
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34381454
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimadvПроблема следующая, класс содержит член - ссылку, есть два конструктора, различаются одним параметром, а так все одинаково, при попытки использовать во втором конструкторе, первый, выдается следующее сообщение
no appropriate default constructor available
что не верно, очень не хочется переписывать одно и тоже два раза, или даже больше.
Код: plaintext
1.
2.
3.
4.
A::A(ClassB& _B, int _iCount)
{
  
    ......
}

Надо так
Код: plaintext
1.
2.
3.
4.
A::A(ClassB& _B, int _iCount) :m_cMember(&_B)
{
//    A(_B); -- Так нельзя!!!
    ......
}
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34381458
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[src с++]
A::A(ClassB& _B, int _iCount) :m_cMember(_B) // амперсанд перед _B лишний
{
[/src]----
Если молния в лоб угодит,
Значит просто подставлен лоб
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34381873
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimadv пишет:
> Автор: "dimadv"
> Проблема следующая, класс содержит *член - ссылку,* есть два
> конструктора, различаются одним параметром, а так все одинаково, при
> попытки использовать во втором конструкторе, первый, выдается следующее
> сообщение
> no appropriate default constructor available
> что не верно, очень не хочется переписывать одно и тоже два раза, или
> даже больше.
>
> class A
> {
> private:
> ClassB& m_cMember;
> public:
> A(ClassB& _B);
> A(ClassB& _B, int _iCount)
> }
>
> A::A(ClassB& _B):m_cMember(&_B)
> { .... }
> A::A(ClassB& _B, int _iCount)
> {
> A(_B);
> ......
> }

Это - создание временной переменной , а не вызов конструктора.
Если очень надо, то делается это так:

new (this) A(_B);

Но в вашем случае я думаю лучше продублировать либо весь код
конструктора в другом конструкторе, либо продублировать
только инициализацию мемберов, а какой-то сложный
общий код инициализации вынести в отдельную функцию,
которую и вызывать из двух конструкторов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34381930
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
dimadv пишет:
> Автор: "dimadv"
> Проблема следующая, класс содержит *член - ссылку,* есть два
> конструктора, различаются одним параметром, а так все одинаково, при
> попытки использовать во втором конструкторе, первый, выдается следующее
> сообщение
> no appropriate default constructor available
> что не верно, очень не хочется переписывать одно и тоже два раза, или
> даже больше.
>
> class A
> {
> private:
> ClassB& m_cMember;
> public:
> A(ClassB& _B);
> A(ClassB& _B, int _iCount)
> }
>
> A::A(ClassB& _B):m_cMember(&_B)
> { .... }
> A::A(ClassB& _B, int _iCount)
> {
> A(_B);
> ......
> }

Это - создание временной переменной , а не вызов конструктора.
Если очень надо, то делается это так:

new (this) A(_B);

Но в вашем случае я думаю лучше продублировать либо весь код
конструктора в другом конструкторе, либо продублировать
только инициализацию мемберов, а какой-то сложный
общий код инициализации вынести в отдельную функцию,
которую и вызывать из двух конструкторов.
Posted via ActualForum NNTP Server 1.4
MasterZiv ты чему детей учишь? Не дай бог класс будет наследником кого-то и по второму разу пойдет инициализация папы, он ведь потом и не сообразит где ресурсы текут!!!
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34382308
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded пишет:
> MasterZiv ты чему детей учишь? Не дай бог класс будет наследником

С трудом представляю детей, программирующих на С++.
Так что уж пусть сами думают о последствиях.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Перегруженный конструктор
    #34383544
MasterZiv ты чему детей учишь? Не дай бог класс будет наследником кого-то и по второму разу пойдет инициализация папы, он ведь потом и не сообразит где ресурсы текут!!!

да мало того, не дай бог неперехваченное исключение внутри вызываемого конструктора..
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегруженный конструктор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]