Форум программистов, компьютерный форум CyberForum.ru

Наследование классов и обращение к Private/Static - C++

Восстановить пароль Регистрация
 
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
10.09.2013, 02:37     Наследование классов и обращение к Private/Static #1
Здравствуйте! У меня возникла проблема при попытке унаследовать параметры класса...
У меня есть 2 класса. Player и Enemy. У обоих есть параметры HP, MP, UnitName, UnitLegion. Однако, только у Player есть LightPower и LegionPower, а у Enemy взамен есть DarkPower, и ChaosPower. Эти 2 параметра мне не нужно, что бы унаследовались. Однако... Они переходят от класса Player к классу Enemy(т.е. я, как бы могу к ним обратится), однако... Когда я, пытаюсь обратится к Player.LightPower(т.е. занести туда значения), мне компилятор сообщает, что LightPower не доступен...
Подскажите, в чём проблема?
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdafx.h"
#include <iostream>
#include <string>
#include <time.h>
#include <Windows.h>
using namespace std;
 
class Player
{
    private:int LightPower;
    private:int LegionPower;
    public:
            int HP;
            int MP;
            string UnitName;
            string UnitLegion;
};
Player You;
 
class Enemy:public Player
{
    static int DarkPower;
    static int ChaosPower;
};
Enemy Enemy;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    You.HP=100;
    You.MP=100;
    cout<<"Введите имя Вашего героя: ";
    getline(cin, You.UnitName);
    system("cls");
    cout<<"Введите имя Вашего легиона: ";
    getline(cin, You.UnitLegion);
    system("cls");
        You.LightPower=1+rand()%25;//Вот здесь мне компилятор сообщает, что нельзя обратится к LightPower(точнее, что данный параметр не доступен)... Хотя - это же класс Player...
    srand(time(0));
    int x1=0;
    int x2=0;
    int xR=0;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 02:37     Наследование классов и обращение к Private/Static
Посмотрите здесь:

C++ Наследование. Помогите с этими public, protected. private
Private: static C++
Наследование со спецификатором доступа private C++
private наследование и виртуальный метод C++
Зачем нужно private наследование в классах? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.09.2013, 05:05     Наследование классов и обращение к Private/Static #2
Цитата Сообщение от Jack Wade Посмотреть сообщение
//Вот здесь мне компилятор сообщает, что нельзя обратится к LightPower(точнее, что данный параметр не доступен)... Хотя - это же класс Player...
что значит "хотя это класс player"? В классе player это поле приватное
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
10.09.2013, 10:25  [ТС]     Наследование классов и обращение к Private/Static #3
alex_x_x, но ведь этот параметр(LightPower) внутри класса Player... И, почему я не могу к нему обратится внутри класса?
или, приватные параметры нельзя использовать?
В общем, подскажите пожалуйста, как мне сделать так, что бы параметры LightPower и LegionPower можно было использовать только внутри переменной Player(т.е. вводить их значения можно было бы только через Player You)?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.09.2013, 10:27     Наследование классов и обращение к Private/Static #4
Цитата Сообщение от Jack Wade Посмотреть сообщение
system("cls");
You.LightPower=1+rand()%25;
didn't get it
где это внутри класса? Вы обращаетесь к его полю прямо в main'e
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
10.09.2013, 10:44  [ТС]     Наследование классов и обращение к Private/Static #5
alex_x_x, я сделал для проверки функцию в private, но, почему эта функция из Player доступа у Enemy?
Подскажите, как мне тогда сделать так, что бы к части параметров можно было обращаться в Main только внутри класса(т.е. что бы параметр A был доступен только у Player You, а в Enemy Enem:Public Player)?
Вообще, как я читал, private - это параметры, которые доступны внутри функций класса, или другим "дружественным классам"... Но ведь класс Enemy у меня-не дружественный(т.е. этот класс должен унаследовать только лишь HP, MP, UnitName, UnitLegion)...
Yandex
Объявления
10.09.2013, 10:44     Наследование классов и обращение к Private/Static
Ответ Создать тему
Опции темы

Текущее время: 17:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru