Модераторы: JackYF, bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование типов, Преобразование типов 
:(
    Опции темы
АлексейX86
  Дата 14.8.2016, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.2.2013

Репутация: нет
Всего: нет



Доброго времени суток.
Есть код:
Код

class GameObject{
public:
    const Point* GetSize();

private:
    Point         size;
}


class Ship : public GameObject{
public:
Ship() {
    for(int i = 0; i <= 4; i++){
        tails[i] = Tail((const GameObject*)this);
    }
}

private:
    Tail tails[4];
}


class Tail : public GameObject{
public:
Tail(const GameObject* _from){
    from      = _from;
}

void Update(){
     const Point* fromSize = from->GetSize();  // тут ошибка
}

private:
    const GameObject* from;
}


Ошибка возникает внутри метода Update класса Tail. А именно, при попытке вызова метода GetSize из from (тип GameObject) выводит ошибку :
error C2662: GameObject::GetSize: невозможно преобразовать указатель "this" из "const GameObject" в "GameObject &".
И при вызове других методов GameObject из from тоже ошибка. Если ничего не вызывать из from, то проект успешно компилится.

Можете, пожалуйста, объяснить где я сделал ошибку. 
Спасибо.


Это сообщение отредактировал(а) АлексейX86 - 14.8.2016, 11:18
PM MAIL   Вверх
mes
Дата 14.8.2016, 16:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(АлексейX86 @  14.8.2016,  10:15 Найти цитируемый пост)
    const Point* GetSize();

Код

const Point* GetSize() const; //<--



--------------------
PM MAIL WWW   Вверх
bsa
Дата 16.8.2016, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



АлексейX86, по сути вопроса mes уже все ответил. Я просто дополню относительно кода. Метод GetSize() должен возвращать объект Point, а не указатель на него. В крайнем случае (если объет очень большой), то константную ссылку. А потом, чисто по логике, GetSize() не может возвращать тип Point, этот тип может возвращать только метод GetLocation, а GetSize должен возвращать что-то вроде Area или Rect.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0992 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.