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

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

Войти
Регистрация
Восстановить пароль
 
goodle
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
#1

Классы, определение оператора [] - C++

02.02.2013, 14:58. Просмотров 450. Ответов 4
Метки нет (Все метки)

Добрый день, леди и джентльмены! Помогите со следующим вопросом:

Есть два класса (названия говорят за себя):
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 DataMember
{
    public:
        long value;
        double time;
        double date;
    private:
 
};
class DataSet
{
    public:
        int add() {
            DataMember dtmb;
            DtSet.push_back(dtmb);
            int sz;
            return sz=DtSet.size()-1;
        }
        DataMember operator [] (int i) {if (i<DtSet.size()) {return DtSet[i];}}
        int size() {return DtSet.size();}
    private:
        vector < DataMember > DtSet;
};
И код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    long i=0;
    DataSet dt1;
    while(!query->Eof)
    {
        int id=dt1.add();
        float t1=(query->FieldByName("Close")->AsFloat);
        t1=(query->FieldByName("T")->AsFloat);
        t1=(query->FieldByName("D")->AsFloat);
        dt1[id].value=(query->FieldByName("Close")->AsFloat);
        dt1[id].time=(query->FieldByName("T")->AsFloat);
        dt1[id].date=(query->FieldByName("D")->AsFloat);
        i++;
        t1=dt1[id].value; //здесь я получаю 0, несмотря на то, что float t1=(query->FieldByName("Close")->AsFloat) !=0
        t1=dt1.size();
        query->Next();
    }
Почему после присвоения элементу датасета определенного значения при обращении к нему я получаю 0?
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2013, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы, определение оператора [] (C++):

определение оператора += - C++
пишу класс, обертка над С строкой, объявил оператор += class string { private: char *sz_; public: string &amp;operator+=(const...

Классы, комплексные числа и перегрузка оператора - C++
Составить описание класса для представления комплексных чисел. Обеспечить вы- полнение операций сложения, вычитания и умножения...

Классы (константный метод и перезагрузка оператора равно) - C++
ПОМОГИТЕ ПОЖАЛУЙСТА, ЧТО НЕ ТАК???!!!! илл как тогда сделать правильно???? Очень очень надо(( Дано было задание: 1)Создать класс 2)...

классы,определение операторов - C++
Определите класс Vec4 как вектор из 4-х float. Определите оператор для доступа к элементу вектора. Определите операторы +, - для...

Классы: определение идентификатора класса, в другом классе - C++
Доброго времени суток:) Проблема в не знании, как идентифицировать переменную, использовавшаяся в другом классе. // 1 IntelliSense:...

Определение класса, описывающего комплексное число. Перегрузка для него бинарного оператора "*" - C++
1. Определить класс, описывающий комплексное число. Для класса перегрузить бинарный оператор *. Написать программу, в которой используется...

4
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.02.2013, 15:14 #2
ваш оператор [] возвращает вам копию объкта, в 9-11 строках создаются и модифицируются 3 копии
1
goodle
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
02.02.2013, 19:24  [ТС] #3
Цитата Сообщение от Jupiter Посмотреть сообщение
ваш оператор [] возвращает вам копию объкта, в 9-11 строках создаются и модифицируются 3 копии
Я так и думал, спасибо.

Добавлено через 4 часа 5 минут
Правильный вариант, если кому интересно:
C++
1
DataMember & operator [] (int i) {if (i<DtSet.size()) {return DtSet[i];}}
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.02.2013, 19:25 #4
Цитата Сообщение от goodle Посмотреть сообщение
Правильный вариант, если кому интересно
да, а что будет если i >= size ?
0
goodle
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
03.02.2013, 14:18  [ТС] #5
Цитата Сообщение от Jupiter Посмотреть сообщение
да, а что будет если i >= size ?
Я знаю о возможной ошибке в этом случае, просто решил потом приделать, сейчас некогда
0
03.02.2013, 14:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 14:18
Привет! Вот еще темы с ответами:

Избыточное копирование объекта при реализации оператора умножения и оператора присваивания - C++
Есть класс работы с матрицами. Есть операция умножения матриц, описанная как оператор класса. В данном коротком примере я просто моделирую...

Неправильная работа оператора присваивания после работы оператора суммирования - C++
Доброго времени суток. У меня есть класс вектор class TVector {//ewde public: TVector(); //Vector(Vector &amp;v); TVector(int...

Придумайте простую программу с использованием условного оператора IF и оператора switch - C++
Пожалуйста, придумайте простую программу с использованием: условного оператора IF и оператора switch . Эти программы должны быть...

Вызов прегруженного оператора вывода в поток из аналогичного оператора - C++
Программирую в c9.io с g++ получается тоже самое. Элементами стека(pointList) являются стеки(list) для которых уже определен оператор...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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