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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zuhher
Сообщений: n/a
#1

Обращение к мемберам класса под другим именем - C++

20.09.2011, 18:39. Просмотров 426. Ответов 4
Метки нет (Все метки)

Здравствуйте.
Возможно ли каким-то образом обращаться к мемберам под другими именами, но так, чтобы подсказка в Visual Studio работала верно.
При помощи #define у меня вышло, т.е. код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class vehicle
{
public:
    int int1;
    int int2;
    int int3;
};
 
#define engineHP int1   //мощность дигателя
#define maxSpeed int2   //максимальная скорость
#define maxCargo int3   //максимальный перевозимый груз
#define normalSpeed int2//средняя рабоая скорость
#define addCargo int3   //сколько гурза может тащить в прицепе
...
    vehicle car;
    car.engineHP = 300;
    car.MaxSpeed = 180;
    car.maxCargo = 400;
    vehicle tractor;
    tractor.engineHP = 1000;
    tractor.normSpeed = 20;
    tractor.addCargo = 25000;
работает. Но при этом в подсказке после того как ставлю точку в списке есть только int1, int2, int3, хотя это и понятно.

Суть вопроса в том, возможно ли каким-то образом чтобы в подсказке высвечивались day, month, year; width, length, height, и, если можно, то как? Я в этом деле не силен, поэтому не знаю как это сделать, но согласен на все что угодно: создание других классов на базе этого, перегрузка, если это возможно (хотя я и не представляю себе как)...
Почему это надо? Этот класс я для примера привел, а на самом деле есть класс с набором методов, которые абсолютно одинаковы как для первого случая (car), так и для другого (tractor). Не хочется делать два абсолютно одинаковых класса. Возможно есть способ как-то переназначить это дело.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2011, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение к мемберам класса под другим именем (C++):

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Обращение к методам класса через указатель на экземпляр класса - C++
Добрый день. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

Как описывать функции, заданные в шаблоне класса, тип возвращаемого значения которых совпадает с именем класса - C++
Здравствуйте. А как описывать функции, заданные в шаблоне класса, тип возвращаемого значения которых совпадает с именем класса? Более...

Обращение в методах класса к полям класса - C++
Добрый вечер! Подскажите пожалуйста правильное обращение в методах класса к полям класса. class X {char name ; double zar; ...

Вывести на экран числа 5, 10 и 21 одно под другим - C++
Помогите пожалуйста Вывести на экран числа 5, 10 и 21 одно под другим.

Обращение к данным класса. - C++
Доброе время суток. Начал самостоятельно изучать классы. Хотел выполнить задание, но возникла первая трудность. #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.09.2011, 20:24 #2
бредятину вы придумали товарищ, по вашему tractor не обладает максимальной скортью, а автомобиль не имеет средней(нормальной) скорости, делайте все 6 полей класса
0
Zuhher
Сообщений: n/a
20.09.2011, 23:47 #3
На всякий случай повторю, это чисто пример, от фонаря, придуманный впопыхах для наглядности. Не более не менее. И, коль уж оно понадобилось в том виде, в каком я просил, значит оно понадобилось.

Хорошо, допустим класс будет другим...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Arr
{
public:
    CString str1, str2, str3;
    CString Out(CString sym);
...
Arr FIO;
FIO.secName = L"Иванов";
FIO.Name = L"Петр";
FIO.thirdName = L"Сидорович";
Arr date;
date.day = L"12";
date.month = L"12";
date.year = L"2012";
Arr box;
box.width = L"5";
box.length = L"10";
box.height = L"20";
 
CString output;
output = FIO.Out(L" "); //output = "Иванов Петр Сидорович"
output = date.Out(L".");//output = "12.12.2012"
output = box.Out(L"x"); //output = "5x10x20"
так, надеюсь, понятней и мыслей об объединении всего в один класс не возникнет...
CAHTEXHUK
Заблокирован
21.09.2011, 03:38 #4
Цитата Сообщение от Zuhher Посмотреть сообщение
Почему это надо? Этот класс я для примера привел, а на самом деле есть класс с набором методов, которые абсолютно одинаковы как для первого случая (car), так и для другого (tractor)
vehicle - абстрактный базовый класс, car и tractor - наследуются от него
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.09.2011, 18:09 #5
Сделайте функции геттеров и сеттеров и назовите их как хотите. Так, как вы пишете, сделать можно, но подсказок в студии не будет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2011, 18:09
Привет! Вот еще темы с ответами:

Описание класса с именем TRAIN - C++
Задание 1: Описание класса. Запишите описание класса с именем TRAIN, содержащего следующие поля: 1)название пункта назначения; ...

Описание класса с именем PERSON - C++
Описание класса. Запишите описание класса с именем PERSON, содержащего следующие поля: фамилия и инициалы; дата рождения...

Обращение к приватному полю класса - C++
class CMessage { char *pmessage; public: void ShowIt() { cout<<endl<<pmessage<<endl; }

Оператор this и обращение к членам класса - C++
строка this->b = new B; означает взять вдресс текущего объекта b и выделить под него память?так? class B{ public: int k; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.09.2011, 18:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru