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

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

Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Как сделать чтобы класс возвращал значение своего поля? - C++

02.02.2014, 22:29. Просмотров 318. Ответов 6
Метки нет (Все метки)

Возможно я не верно выразился, есть класс:
C++
1
2
3
4
5
class Monstr
{
    String name;
    int ammo;
};
как сделать чтобы при:
C++
1
2
Monstr zombie;
zombie.c_str(); // например. чтобы при совершении действия над классом, испольвазолся его элемент.
(в примере std::string)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 22:29     Как сделать чтобы класс возвращал значение своего поля?
Посмотрите здесь:

Как сделать, чтобы экземпляр класса возвращал значение? - C++
так ifstream m("file"); if(m)//<<<===как заставить свой класс делать также { //действие }

Как сделать, чтобы new возвращал NULL? - C++
Как сделать, чтобы new возвращал NULL?

Как сделать, чтобы класс обрабатывал по одному элементу vector - C++
привет всем ! как сделать так чтобы класс обрабатывал по одному элементу vector r, g, b, состоящий из 10 элементов а то у меня получается...

Как сделать чтобы из первого класса вычитал второй и третий класс? - C++
Как сделать чтобы из первого класса вычитал второй и третий класс? #include <iostream> using namespace std; class shaiba { ...

Как сделать чтобы значение n сохранилось для всех функций? - C++
Доброго времени суток. Интересует такой вопрос. Нужно реализовать что-то подобное void create(table *str,int n) { int i=0; ...

Класс как аргумент своего же метода - C++
В примере ниже происходит лишний (по замыслу не нужный) вызов деструктора. Вопрос в следующем: как в методе класса в качестве аргумента...

как сделать чтобы дружественная функция классу принимал ааргумент типа "класс" который при создании ничем не инициализирован? - C++
Друзья! Вот код, компилятор ругается на строку ff (f3); В общем переменную f3 необходимо объявлять без параметров, а потом передавать её...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Slinner
-1 / 0 / 3
Регистрация: 01.02.2014
Сообщений: 13
02.02.2014, 22:41     Как сделать чтобы класс возвращал значение своего поля? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
class Monstr: public std::string
{
int ammo;
};
 
Monstr zombie;
zombie.c_str();
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
02.02.2014, 22:42  [ТС]     Как сделать чтобы класс возвращал значение своего поля? #3
Да, как-то я наморозил
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
02.02.2014, 22:44     Как сделать чтобы класс возвращал значение своего поля? #4
чтобы не рушить основу ООП пишите
zombie.name.c_str()

в общем, по-хорошему это некоторое ограничение от быдло-кода
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
03.02.2014, 03:00  [ТС]     Как сделать чтобы класс возвращал значение своего поля? #5
Цитата Сообщение от abit Посмотреть сообщение
чтобы не рушить основу ООП пишите
zombie.name.c_str()

в общем, по-хорошему это некоторое ограничение от быдло-кода
Писать zombie.name.c_str();
Это и есть быдло-код, по хорошему чтобы не нарушать основы ООП необходимо:
zombie.GetName();
где GetName:
C++
1
2
char* GetName() const;
std::string GetName() const; // или на крайний уж
Добавлено через 1 минуту
У меня ResourceManager глобальный внутренний класс и у него не хотелось бы все методы через декоратора делать, просто лишняя прослойка, вот меня и вклинило что можно перегрузить аксцессор

Добавлено через 1 минуту
Кликните здесь для просмотра всего текста
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
#ifndef widget_h__
#define widget_h__
 
#include "image.h"
#include <list>
#include <string>
#include "hge/hgevector.h"
 
typedef hgeVector Point2D;
typedef std::list<Point2D> PointList;
 
class Widget:public Image
{
 
public:
                    Widget(const String& path, float width_image, float height_image, float width, float height);
            void    Update();
            void    Move(float move_x, float move_y);
            void    Run();
            void    CheakHit();
            void    SwitchBlendMode();
            void    GetPosition(float* x, float* y);
            void    SetPressed();
            void    SetUnPressed();
            bool    IsHover();
            bool    IsPress();
            bool    IsVisible();
 
    virtual void    MouseMoveEventProcess();
    virtual void    MouseButtonDownEventProcess();
    virtual void    MouseButtonUpEventProcess();
 
private:
 
    bool   m_is_hover,m_is_press;
    bool    m_is_visible;
    PointList   route_list;     
};
 
typedef boost::shared_ptr<Widget> WidgetShared;
typedef std::vector<WidgetShared> WidgetVector;
 
#endif // widget_h__


Не хочется к такому корявому классу ничего подмешивать
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
03.02.2014, 03:10     Как сделать чтобы класс возвращал значение своего поля? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Возможно, что то вроде этого?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
struct A {
   std::string name;
   
   operator const char *() {
      return name.c_str();
   }
};
 
int main() {
   A a = { "test" };
   
   std::cout << a << std::endl;
   
   return 0;
}
vbloodv
03.02.2014, 13:42  [ТС]     Как сделать чтобы класс возвращал значение своего поля?
  #7

Не по теме:

Toshkarik, PERFECT то что нужно ! КРАСАВЧИК. Тема закрыта

Yandex
Объявления
03.02.2014, 13:42     Как сделать чтобы класс возвращал значение своего поля?
Ответ Создать тему
Опции темы

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