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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 13:02   #1
alex_alpha
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 43
По умолчанию перегрузка оператора ->

Здравствуйте.
Подскажите пожалуйста, как сделать правильно. Есть два класса. Необходимо получить доступ из одного класса к членам другого с помощью перегрузки ->:
Код:
class kard{
    int suit,rank;
public:
    kard(){
        suit=rand()%4+3;
        rank=rand()%13+2;
    }
};
class game{
    kard *gm, *ptr;
    int size_gm;
public:
    game(){
        size_gm=2;
        gm=new kard[size_gm];
    }
kard *operator ->(){
    return ptr;
}
void Func(){
    ptr=gm;
    cout<<gm->suit; //вот в этом месте пишет, что member inaccesible
    cout<<gm->rank;//что сделать, не знаю :( 
    }
};
alex_alpha вне форума Ответить с цитированием
Старый 23.06.2010, 13:15   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
cout<<gm->suit; //вот в этом месте пишет, что member inaccesible
у вас объявленно как
Цитата:
class kard{
int suit,rank;
public:
kard(){
suit=rand()%4+3;
rank=rand()%13+2;
}
По умолчанию, т.е. если я вно не указано что-либо, все члены класса приватные, т.е.все равно, что private: int suit,rank; по этому прямого доступа к ним, из вне, нет.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 23.06.2010, 13:24   #3
alex_alpha
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 43
По умолчанию

Спасибо за подсказку, но:
Код:
kard *operator ->(){
    return ptr;
}
Этот код лишний, работает и без него, если suit и rank - public.
А мне, в том-то и дело, необходимо получить доступ к приватным членам класса.

Последний раз редактировалось alex_alpha; 23.06.2010 в 13:59.
alex_alpha вне форума Ответить с цитированием
Старый 23.06.2010, 13:25   #4
alex_alpha
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 43
По умолчанию

Т.е. перегрузки -> не происходит
alex_alpha вне форума Ответить с цитированием
Старый 23.06.2010, 14:19   #5
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

А она и не будет происходить пока suit и rank; являются private
Как вариант: сделайте классы родственными и поставьте модификатор protected
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 23.06.2010, 19:07   #6
alex_alpha
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 43
По умолчанию

Не совсем то, что мне нужно, но все равно спасибо за ответы.
alex_alpha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ перегрузка оператора cati Помощь студентам 10 21.04.2010 23:38
перегрузка оператора << z3rg Общие вопросы C/C++ 18 02.03.2010 02:58
перегрузка оператора [] в c++ terminadoor Общие вопросы C/C++ 3 21.01.2010 15:44
Перегрузка оператора + z3rg Общие вопросы C/C++ 1 22.03.2009 03:06
Перегрузка оператора Crucian Общие вопросы C/C++ 2 22.10.2007 09:44