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

Шаблонный клас и странности с его функцией - C++

Войти
Регистрация
Восстановить пароль
 
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
02.01.2013, 19:25     Шаблонный клас и странности с его функцией #1
Здравствуйте!
Тут у меня маленькая проблемка. Вот здесь описание класа и одной из его функций
C++
1
2
3
4
5
6
7
class volume: public vector< vector< vector<_obj> > >
{
    public:    
    vector<_obj>& getColumn(CoordType x, CoordType z)
    {
        return at(x).at(z);
    }
При компиляции G++ ругается так:
Код
error: there are no arguments to ‘at’ that depend on a template parameter, so a declaration of ‘at’ must be available [-fpermissive]
Как я понимаю, если поставить флаг -fpermissive, то оно скомпилируется, но мне не очень нравится эта идея. Поэтому подскажите, пожалуйста, как это исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2013, 19:25     Шаблонный клас и странности с его функцией
Посмотрите здесь:

клас обработчик C++
C++ Векторы+клас
C++ матрица. клас
C++ матрица. клас. 2
переделать клас C++
C++ клас Letter, клас Person
C++ клас myDate
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12286 / 6973 / 784
Регистрация: 27.09.2012
Сообщений: 17,286
Записей в блоге: 2
Завершенные тесты: 1
02.01.2013, 20:37     Шаблонный клас и странности с его функцией #2
Собственно, что такое at? Из Вашего кода ничего не понятно.
nonedark2008
776 / 534 / 98
Регистрация: 28.07.2012
Сообщений: 1,431
02.01.2013, 20:49     Шаблонный клас и странности с его функцией #3

Не по теме:

at - это метод из наследуемого вектора


А так, мне тожен хочется увидеть код более обширно. По крайней мере ругается на шаблон, а шаблон наблюдается только в векторе. Или у вас есть еще что-то?

Добавлено через 1 минуту
CoordType - это кто?
0x10
02.01.2013, 20:50
  #4

Не по теме:

Цитата Сообщение от DrHlus Посмотреть сообщение
public vector< vector< vector<_obj> > >
Ну жесть же... Неужели не возникает желание сдеать как-нибудь попроще?

DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
02.01.2013, 20:53  [ТС]     Шаблонный клас и странности с его функцией #5
Я тут чуток код поправил - надеюсь, так понятнее.
C++
1
2
3
4
5
6
7
8
9
template<typename _obj>
class volume: public vector< vector< vector<_obj> > >
{
    public:
    vector<_obj>& getColumn(CoordType x, CoordType z)
    {
        return at(x).at(z);
    }
};
at - унаследованный метод от базового класса vector< vector< vector<_obj> > > (типа трехмерный вектор из объектов _obj)

Пока это писал, пришло еще 3 сообщения
CoordType - просто синоним для int16_t.

Шаблонный тип есть только в описании базового класса и возвращаемого значения getColumn.
Обширнее, чесно говоря, и нечего писать.

Другой альтернативы (кроме multi_array, который мне не подходит) для базового класа я не вижу
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
02.01.2013, 20:54     Шаблонный клас и странности с его функцией #6
0x10, Нормалные герои, всегда идут в обход, а вот палладины...
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
02.01.2013, 20:59     Шаблонный клас и странности с его функцией #7
DrHlus,
C++
1
return this->at(x).at(z);
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
02.01.2013, 21:10  [ТС]     Шаблонный клас и странности с его функцией #8
Большое спасибо 0x10
А какие пути обхода предлагает наш герой Invader_Zim?
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
02.01.2013, 21:16     Шаблонный клас и странности с его функцией #9
Чтобы предложить адекватные обходные пути, надо, наверное, знать формулировку всей задачи. Но вообще думается, что тут можно не городить иерархию, а написать класс, в котором расположить более простую структуру (например, одномерный вектор), и для нее уже определить метод индексации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2013, 21:20     Шаблонный клас и странности с его функцией
Еще ссылки по теме:

клас птиц C++
Передача массива символов в функцию strlen после создания его функцией sprintf C++
Шаблонный класс, не работает с френд функцией C++
C++ Найти расстояние от ближайшей точки треугольника до его стороны с функцией
C++ GetPixel и его странности

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

Или воспользуйтесь поиском по форуму:
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
02.01.2013, 21:20  [ТС]     Шаблонный клас и странности с его функцией #10
ладно, убедили. подумаю об этом
Yandex
Объявления
02.01.2013, 21:20     Шаблонный клас и странности с его функцией
Ответ Создать тему
Опции темы

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