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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2011, 16:50   #1
BadProgrammer
Пользователь
 
Аватар для BadProgrammer
 
Регистрация: 09.01.2010
Сообщений: 14
По умолчанию Запутанный класс

Здравствуйте!
Вот, решил обратиться к специалистам по вот какому делу:
У меня есть классы. Предположим, из два (частично используется .NET):
Код:
public ref class A
{
public:
B^ Obj1;//Объект класса B
Int32 getInt (void) {return Integer;};//Для чтения из защищенной области
private:
Int32 Integer;
};

public ref class B
{
public:
void C (void)
{
//Тут происходит чтение с использованием Integer
};
};

void main (void)
{
A^ Obj2;
Obj2->Obj1->C();
}
Данный выше код не работает, т.к. компилятор не видит Integer, и, соответственно, обозначает его, как не объявленный идентификатор.
Внимание, вопрос: как же всё-таки обратиться к переменной, объявленной внутри класса-предка?
Заранее спасибо!
BadProgrammer вне форума Ответить с цитированием
Старый 09.01.2011, 21:00   #2
hvvpr7
Новичок
Джуниор
 
Регистрация: 09.01.2011
Сообщений: 1
По умолчанию

чистый С++ юзай
Код:
class base{
public:
int get_c(void){return c};
private:
int c;
}
class derived : public base {
...
}
using namespace std;
main(int arcgc, char **acrgv)
{
    derived d_obj;
    cout <<  d_obj.get_c() << endl;
}

Последний раз редактировалось Stilet; 09.01.2011 в 21:33.
hvvpr7 вне форума Ответить с цитированием
Старый 09.01.2011, 21:04   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А как именно чтение происходит? уж не тупо Integer пишете? Класс B не наследуется от А, т.е. не имеет такого члена, как Integer. Да и сам Integer как private объявлен.
pu4koff вне форума Ответить с цитированием
Старый 11.01.2011, 10:05   #4
BadProgrammer
Пользователь
 
Аватар для BadProgrammer
 
Регистрация: 09.01.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А как именно чтение происходит? уж не тупо Integer пишете? Класс B не наследуется от А, т.е. не имеет такого члена, как Integer. Да и сам Integer как private объявлен.
Тупо Integer . Я знаю, что предок наследоваться не будет, но нужно построить именно так, чтобы обращение было к предку. Вы, конечно, можете сказать, что проще объявить и метод по "взятию" переменной, и саму переменную в одном классе (и будете правы), но условия программы, которую я пишу, заключается в том, что в объекте-предке создаются два объекта-потомка. каждый из них, как-бы используется объектом-предком. Если обращение невозможно, то мне приходит лишь один путь:
Код:
public ref class B
{
public:
void C (void)
{
Int2 = /*тупо*/ Integer;//Это для примера, как НЕ правильно, но изящно.
};
private:
{
Int32 Int2;
};
};
Код:
public ref class A
{
public:
B^ Obj1;//Объект класса B
Int32 getInt (void) {return Integer;};//Для чтения из защищенной области
private:
Int32 Integer;
};


public ref class B
{
public:
void C (Int32 pseudo_Integer)
{
Int2 = pseudo_Integer;//Это для примера, как правильно, но НЕ изящно.
};
private:
{
Int32 Int2;
};
};

void main (void)
{
A^ Obj2;
Obj2->Obj1->C(Obj2->getInt());
}
Теперь вопрос вот в чем: как сделать правильно и изящно? Это же C++, тут в всё должно быть изящно и правильно (в отличие от Дэлфи, там пофиг, лишь бы работало).

Последний раз редактировалось BadProgrammer; 11.01.2011 в 22:17.
BadProgrammer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс Chartvit Visual C++ 2 05.01.2011 22:20
класс Чудский Общие вопросы C/C++ 3 20.10.2010 11:14
КЛАСС 4ika Общие вопросы C/C++ 1 16.03.2010 21:32
C++ . Класс Ануар56 Помощь студентам 8 23.04.2009 19:41