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

Как перегрузить оператор индексации для указателя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Каково назначение функции malloc http://www.cyberforum.ru/cpp-beginners/thread686014.html
Вот решенная задача: #include <stdio.h> #include <stdlib.h> #include <math.h> struct athlet { long m; long pow; athlet()
C++ Число Фибоначчи и рекурсия: код выдает неверные результаты Функция возвращает значение типа int, принимает 2 переменных типа int и 1 типа bool. Первая переменная - номер числа из ряда Фибоначчи которое нужно найти. Если bool будет true, то значение второй... http://www.cyberforum.ru/cpp-beginners/thread686008.html
Сформировать и ввести упорядоченный односвязный список без использования list C++
Подскажите, как сформировать и ввести упорядоченный односвязный список без использования list. Заранее спасибо!!!
C++ Найти объем V, массу m, и площадь S основания слитка
На практике в универе дали задачу, помогите с решением для C++ Известны плотность p, высота h, и радиус основания R циллиндрического слитка. Найти объем V, массу m, и площадь S основания слитка....
C++ После какого уровня c++ начинать изучать php http://www.cyberforum.ru/cpp-beginners/thread685972.html
Народ снова здравствуйте у меня снова вопрос вообщем я хочу изучить C++ и PHP хотел одновременно но на форуме мне сказали изучай сперва С++ так вот после какого времени изучения С++ можно изучать...
C++ Нужно ли программисту знать математику (если да то какую) Здравствуйте народ у меня к вам вот такой вопрос нужно ли программисту знать математику(если да то какую?) просто начал изучать C++ по книге "Программирование.Принципы и практика использования C++" а... подробнее

Показать сообщение отдельно
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 115

Как перегрузить оператор индексации для указателя - C++

01.11.2012, 14:23. Просмотров 484. Ответов 2
Метки (Все метки)

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#define HIGH_H 0
#define LOW_H 1
#define OPEN_H 2
#define CLOSE_H 3
#define VOLUME_H 4
#define HER_H 5
class Candle
{
    double high,low,open,close,volume;
    QDateTime time;
public:
    Candle(double _close,double _open,double _high,double _low,double _volume,QDateTime _time);
    Candle::Candle();   
    double getClose();
    double getHigh();
    double getLow();
    double getOpen();
    double getVolume()
    {
        return volume;
    }
    QDateTime getTime();
    void setClose(double _close)
    {
        close=_close;
    }
    double operator[](int type)
    {       
        printf("\n Candle = %d",type);
        switch(type)
        {
          case HIGH_H :
            return high;
          case LOW_H :
              return low;
          case OPEN_H :
              return open;
          case CLOSE_H :
              return close;
          case VOLUME_H :
              return volume;
          default :
              return close;
        }
 
    }   
    void print();
    ~Candle(){};
};
 
 
 
class Data
{
protected:
    QVector<Candle> vec;
    int currPos;
public:
    Data(Data * _dt)
    {
        vec = _dt -> getVec();
    }
    Data(){};
    Data(QVector<Candle> &_vec)
    {
        vec = _vec;
        currPos = vec.size();
        printf("\n vec.size() = %d   currPos = %d",vec.size(),currPos);
    }
    Candle& operator[](int i)
    {
        printf("\n Data i = %d   currPos = %d  vec,sie()= %d",i,currPos, vec.size());
        if(i < currPos)
        {
            printf("\n next data");         
            return vec[i];
        }
        else
            return Candle :: Candle();
    }       
    int size()
    {
        if(currPos <= vec.size())
            return currPos;
        else
            return vec.size();
    }
    int getCurrPos()
    {
        return currPos;
    }
    QVector<Candle>& getVec()
    {
        return vec;
    }   
};
 
int main(int argc, char *argv[])
{   
    QApplication app(argc, argv);
    QVector <Candle> vec;
    Candle c1(1,2,3,4,5, QDateTime::fromString("M1d1y9800:01:02","'M'M'd'd'y'yyhh:mm:ss"));
    Candle c2(6,7,8,9,10, QDateTime::fromString("M1d1y9800:01:02","'M'M'd'd'y'yyhh:mm:ss"));
    Candle c3(11,12,13,14,15, QDateTime::fromString("M1d1y9800:01:02","'M'M'd'd'y'yyhh:mm:ss"));
    vec.push_back(c1);
    vec.push_back(c2);
    vec.push_back(c3);
    Data dt(vec);
    //Data *dt = new Data(vec); 
    printf("\n >>>>%f", dt[0][CLOSE_H]); 
    return app.exec(); 
 
}
 
Если переменную dt объявляю как объект, то все пашет, а если объявляю как указатель на объект фигня получается((((помогите, плиз!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.