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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как возвратить поле объекта 
:(
    Опции темы
Loginanton
Дата 27.1.2010, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



пример:
Код
class SAMPLE
{
  int a;
 public:
  int b;
  SAMPLE() {a=0;b=123;}
};

SAMPLE sample;
printf("%d\n",sample);

как обратиться через имя объекта к определённому полю этого объекта, т.е. в моём случае чтоб написало 123. предпологаю что с помощью перегрузки, но как не знаю.
PM   Вверх
andrew_121
Дата 27.1.2010, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Код

printf("%d\n",sample.b);


Добавлено через 1 минуту и 11 секунд
называть классы только символами верхнего регистра, не лучшая идея.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Loginanton
Дата 27.1.2010, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
как обратиться через имя объекта к определённому полю этого объекта

т.е. строчку printf("%d\n",sample); не трогаем
PM   Вверх
azesmcar
Дата 27.1.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(Loginanton @  27.1.2010,  08:55 Найти цитируемый пост)
т.е. строчку printf("%d\n",sample); не трогаем 

Где ты это увидел?
Код

printf("%d\n",sample); // было

Код

printf("%d\n",sample.b); // стало

изменений не видно?
PM   Вверх
Loginanton
Дата 27.1.2010, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



надо чтобы было так:
Код

printf("%d\n",sample);

а не так:
Код

printf("%d\n",sample.b);

PM   Вверх
azesmcar
Дата 27.1.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(Loginanton @  27.1.2010,  09:07 Найти цитируемый пост)
надо чтобы было так:

С printf никак (ну или свой printf написать), через cout можно.

Код

#include <iostream>

class SAMPLE
{
    int a;
public:
    int b;
    SAMPLE() {a=0;b=123;}
};

std::ostream& operator << (std::ostream& stream, const SAMPLE& obj)
{
    stream << obj.b;
    return stream;
}

int main()
{
    SAMPLE sample;
    std::cout << sample << std::endl;
}


Это сообщение отредактировал(а) azesmcar - 27.1.2010, 09:11
PM   Вверх
andrew_121
Дата 27.1.2010, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Цитата(Loginanton @  27.1.2010,  09:07 Найти цитируемый пост)
надо чтобы было так:

можно конечно скрыть от пользователя детали реализации, но все равно будет "sample.b"  smile 



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Loginanton
Дата 27.1.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вывод с помощью printf() я привёл как пример. мне надо не изощряться с функцией вывода а как то изменить класс. на практике надо будет что то подобное:
Код

int tmp = 1 + sample;
// tmp должен равняться 124

PM   Вверх
azesmcar
Дата 27.1.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Loginanton

 smile 
научись изъяснять свои мысли.
Код

class SAMPLE
{
    int a;
public:
    int b;
    operator int() const
    {
        return b;
    }
    SAMPLE() {a=0;b=123;}
};



Это сообщение отредактировал(а) azesmcar - 27.1.2010, 09:24
PM   Вверх
andrew_121
Дата 27.1.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



опоздал

Это сообщение отредактировал(а) andrew_121 - 27.1.2010, 09:25


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Loginanton
Дата 27.1.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



огромное спасибо, то что нужно smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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