Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> C++ преобразование классов
Начать новую тему   Ответить на тему   вывод темы на печать

C++ преобразование классов

Автор
Сообщение
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2011.05.26 12:26.57
Ответить с цитатой
Есть некоторое объявление вида

 class A
  {
  ...
  A(B tmp)  
  }

 class B
  {
  ...
  B(A tmp)
  }

На первую попытку преобразования класса B в А компилятор ругается. На вторую - нет. Дело видимо в том, что класс объявлен выше.
Скажите, как правильно осуществить преобразование между этими классами?

Добавлено спустя 2 часа 39 минут 31 секунду:

Нда. Можно просто предварительно объявить классы вида
class A;
class B;
тогда всё работает.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Slin
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 17.12.2004
Сообщения: 1869


Статус: Offline
СообщениеДобавлено: 2011.05.26 13:27.26
Ответить с цитатой
а причем тут преобразование?
Посмотреть профиль Отправить личное сообщение ICQ Number
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2011.05.26 13:37.45
Ответить с цитатой
Неявное приведение типа А к типу Б и наоборот.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Slin
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 17.12.2004
Сообщения: 1869


Статус: Offline
СообщениеДобавлено: 2011.05.26 14:29.30
Ответить с цитатой
это понятно
Причем тут преобразование, если ошибка была в том, что класс не был известен?

Добавлено спустя 55 секунд:

Судя по коду. Необходимо будет явное преобразование.
Посмотреть профиль Отправить личное сообщение ICQ Number
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2011.05.26 15:42.24
Ответить с цитатой
Slin
Класс можно объявлять без его предварительного объявления. Т.е. если без такого объявления написать 2 класс с методом приведения, а 1 без метода - это будет вполне корректно. Зачем вам тут явное преобразование?
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Slin
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 17.12.2004
Сообщения: 1869


Статус: Offline
СообщениеДобавлено: 2011.05.27 07:13.49
Ответить с цитатой
Мне ничего не надо.
zBoy писал(а):
Скажите, как правильно осуществить преобразование между этими классами?
Посмотреть профиль Отправить личное сообщение ICQ Number
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2011.05.27 11:37.19
Ответить с цитатой
zBoy
Вы пишете, что необходимо явное преобразование. Зачем здесь явное преобразование? Объясните.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Slin
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 17.12.2004
Сообщения: 1869


Статус: Offline
СообщениеДобавлено: 2011.05.27 13:07.48
Ответить с цитатой
Простите, ошибся слегка. Давно не программирвоал С++. Да уж и не буду.
Посмотреть профиль Отправить личное сообщение ICQ Number
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> C++ преобразование классов

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы