Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование указателя на объект, Наследование,массив разнородных объектов 
:(
    Опции темы
znick
Дата 28.3.2003, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ЗАДАЧА:
Нужно нескольким классам(CDerivedClass1, CDerivedClass2, ... CDerivedClassN) наследоваться от одного (CBaseClass)
, а потом хранить массив разнородных указателей на эти объекты:

CBaseClass *array_dif_pobjects[100];

Создаются элементы array_dif_pobjects как
объекты CDerivedClass1, CDerivedClass2, ... CDerivedClassN по некоторым условиям, а в масив помещаются так:

array_dif_pobjects[i] = (CBaseClass*)instamce_of_CDerivedClassX;

Но иногда нужно пользоваться методами CBaseClass из масива array_dif_pobjects, наверно так:

array_dif_pobjects[j]->MethodX(...);

ПРОБЛЕМА:
Не правильная работа с данными, смотрел через отладчик. Прерываешь метод CBaseClass::MethodX, вроде данные поменялись, а потом смотришь их в CDerivedClassX ничего подобного.

Что-то здесь не так.
Люди, пожалуйста, поделитесь знаниями ООП.
Заранее благодарен.
PM MAIL   Вверх
Step
Дата 28.3.2003, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



не правильно объявлена функцияя метод х в нее надо передавать указатель, а не объект.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vyacheslav
Дата 28.3.2003, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Поясни чуть подробнее. МетодX у тебя в производных классах переопределяется?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
znick
Дата 29.3.2003, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Step:
Где ты тут объявление метода увидел? И с чего решил что для MetodX нужно что то передавать, я для примера его привел.
Я тестил вот такой метод:
void CBaseClass::Enable(bool _state)
{
this->is_enabled = _state; // просто установка флажка
// (помнишь тему про редактор форм это из той оперы - http://forum.vingrad.ru/index.php?)act=ST&f=1&t=7739
}

Vyacheslav:
Нет, функиональности достаточно из базового.
PM MAIL   Вверх
Step
Дата 29.3.2003, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



CBaseClass ты его сам пишеш или это стандартный


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 29.3.2003, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Давай полные объявления классов, а то так сложно понять что ты имеешь ввиду...
Цитата
this->is_enabled = _state;
а зачем тут this, можно и без него обйтись


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Paradox он таким образом пытаеться вспомнить какие переменные у него есть, ведь после this ему список выводиться...... smile.gif Шучу, хотя изредка я так сам делаю


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 30.3.2003, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Step а класс вью для чего?


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


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

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



По идеи все должно работать. Метод только надобы сделать виртуальным, если он у тебя переопределяется в дочерних классах.

Вот подобный код, все работает
#include <iostream.h>

class Base
{
int a;
public:
void print(){cout<<a<<"\n";}
void Seta(int x){a=x;};
};

class Child1:public Base
{
};
class Child2:public Base
{
};


void main()
{
Base* mas[3];
mas[0]=new Child1;
mas[1]=new Child2;
mas[2]=new Base;
for (int i=0;i<3;i++)
{
mas[i]->Seta(i);
mas[i]->print();
}
}

Если я все правильно поняла


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Step
Дата 31.3.2003, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Paradox
Цитата
Step а класс вью для чего?
это ты к чему


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 31.3.2003, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Step
Цитата
Paradox он таким образом пытаеться вспомнить какие переменные у него есть, ведь после this ему список выводиться......  Шучу, хотя изредка я так сам делаю
к этому


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Paradox а вью причем.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 31.3.2003, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Step class view знаешь? Смотришь а тебе все методы и члены класса показываются (справа сбоку у меня в VS.NET)


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


Эксперт
***


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

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



Step подкалываешь да smile.gif smile.gif smile.gif


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Paradox так тош в нете


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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