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

Перегрузка оператора [] - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Процессы, Обедающие философы http://www.cyberforum.ru/cpp-beginners/thread636854.html
Здравствуйте! Нужна помощь с задачей о обедающих философах сделанная не на потоках как здесь http://www.cyberforum.ru/cpp-beginners/thread549492.html а на процессах
C++ Почему последнюю строку из файла выводит дважды? привет всем! скажите пожалуйста почему последнюю строку выводит 2 раза? FILE *f; if(!(f = fopen("keys.txt","r"))) printf("Error access to keys.txt\n"); else { char stroka; http://www.cyberforum.ru/cpp-beginners/thread636840.html
Длинное имя файла изменить на короткое C++
Доброго времени суток! Необходима помощь в написании программы. Суть: имеется файл с длинным именем,содержащий ххх-,далее последовательность 5 цифр. Необходимо переименовать файл в 'к_эти 5цифр',сохранив расширение. И эта последовательность находится в середине имени файла. на примере: есть файл 'абв-123-...-ххх-22222-...xml',где ххх- постоянные во всех файлах. Нужно,чтобы этот файл был...
C++ Нахождение среднего арифметического и геометрического двух чисел
Здравствуйте! Написал программу для нахождения среднего арифметического и геометрического двух чисел #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> int main (void) { double a , b , Sr; printf("a = ");
C++ const volatile http://www.cyberforum.ru/cpp-beginners/thread636824.html
Пример из Шилдт Г. "С++ Базовый курс (3-е издание, 2010)" стр 205 const volatile unsigned char *port = (const volatile char *) 0x2112; Непонятно почему Шилд называет это константным указателем на изменяемый объект. Как я понимаю volatile здесь не играет ни какой роли в коде... а const относится к переменной, а не к указателю.
C++ Чтение данных из файла на примере программы У меня есть программа которая с клавы осуществляет ввод данных об автомобилях и вывод марку машины с наивысшей скоростью. Вот этот код: #include <iostream> #include <conio.h> #include <cstdlib> #include <locale.h> #include <string.h> using namespace std; подробнее

Показать сообщение отдельно
Serg_GR
0 / 0 / 0
Регистрация: 30.05.2012
Сообщений: 12
13.08.2012, 09:34     Перегрузка оператора []
Создал класс в котором массив указателей на другой класс, перегрузил оператор взятия индекса []
следующим образом:
h-файл
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef HIM_TABL_H
#define HIM_TABL_H
#include "him_elem.h"
class him_tabl
{
    him_elem **m_Tablica;
    int size;
public:
    him_tabl(int cntElm);
    int getSize();
    void tabSave();
    him_elem* operator [](int index);
    ~him_tabl();
};
 
#endif // HIM_TABL_H
cpp-файл
C++ (Qt)
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
#include "him_tabl.h"
#include "io_elm.h"
#include <QDebug>
 
him_tabl::him_tabl(int cntElm)
{
    m_Tablica = new him_elem*[cntElm];
    int j = 0;
    bool isElem;
    io_elm tabFile("him_tab.dat","Read");
    for(int i = 0; i < cntElm; i++)
    {
        m_Tablica[i] = new him_elem();
        isElem = tabFile.fin(m_Tablica[i]);
        if(isElem) j++;
        else break;
    }
    size = j;
}
him_tabl::~him_tabl()
{
    delete []m_Tablica;
}
him_elem *him_tabl::operator [](int index)
{
    if(index < 0 && index >= size)
        qDebug() << "Him table out of index";
    return m_Tablica[index];
}
int him_tabl::getSize()
{
    return size;
}
void him_tabl::tabSave()
{
    io_elm tabFile("him_tab.dat","ReWrite");
    for(int i = 0; i < size; i++)
    {
         tabFile.fout(m_Tablica[i]);
    }
}
при попытке взятия индекса в основной программе:
C++ (Qt)
1
2
3
4
5
6
    him_tabl *tabl = new him_tabl(118);
    curPos = 0;
    //Так:
    him_elem *test = *tabl[curPos];
    //Или так:
    him_elem *test = tabl[curPos];
Получаю сообщение об ошибке
test_ui.cpp:14: ошибка: C2440: инициализация: невозможно преобразовать "him_tabl" в "him_elem *"
Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
ЗАТУПИЛ!
Подскажите люди добрые, что я делаю не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru