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

Шаблонный метод класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать структуру AEROFLOT для хранения следующей информации номер рейса название пункта назначения рейса тип самолета http://www.cyberforum.ru/cpp-beginners/thread453680.html
Сформировать структуру AEROFLOT для хранения следующей информации: · номер рейса; · название пункта назначения рейса; · тип самолета; · цена билета. Ввести с клавиатуры информацию для...
C++ Дана квадратная таблица a[1:n,1:n]. Переставить местами строки 1 и 2, 3 и 4 и т.д. Если n нечетно, то последняя строка остается на месте. помогите разобраться с пару задачками. 1)Дана квадратная таблица a. Переставить местами строки 1 и 2, 3 и 4 и т.д. Если n нечетно, то последняя строка остается на месте. 2)4 Дан двумерный массив... http://www.cyberforum.ru/cpp-beginners/thread453660.html
Последовательность чисел C++
Вводится последовательность из N вещественных чисел. Определить среднее арифметическое среди элементов последовательности, кратных 7.
C++ Восстановить исходную матрицу и напечатать по строкам.
Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам. пожалуйста...
C++ Запись символов по диагонали http://www.cyberforum.ru/cpp-beginners/thread453635.html
Здравствуйте! Помогите со следующей проблемой: Когда я включаю отладку мне нужно чтобы набор символов которые я ввожу выходил по диагонали, а не в строчку Вот пример программы. Только она выводит...
C++ Составить программу, в которой будут вводиться 7 - 10 строк таблицы по структуре данных Составить программу, в которой будут вводиться 7 - 10 строк таблицы по структуре данных Буддийские монастыри Японии периода Нара ( Название,Школа,Количество монахов,Площадь земель(га) ) ... подробнее

Показать сообщение отдельно
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275

Шаблонный метод класса - C++

27.02.2012, 14:28. Просмотров 975. Ответов 1
Метки (Все метки)

Имеется следующая ситуация:
C++
1
2
3
4
template <class T> class Array : public std::deque<boost::shared_ptr<T> >
{
public:
};
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
class Class1
{
public:
int getID();
....
private:
int _id;
...
};
 
typedef Array<Class1> Class1Array;
 
class Class2
{
int getID();
....
private:
int _id;
...
};
 
typedef Array<Class2> Class2Array;
 
class Class3
{
private:
shared_ptr<Class1Array> _class1;
shared_ptr<Class2Array> _class2;
};
В ходе работы требуется получить индексы объектов в Array по идентификаторам объектов. Можно сделать было бы так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    int Class3::getClass1ArrayIndexByID(const int& id)
    {
        FTRACE1(id)
 
        for (unsigned int i = 0; i < _class1->size(); i++)
        {
            if ((*_class1)[i]->getId() == id)
                return i;
        }
        return -1; //not found
    }
 
    int Class3::getClass2ArrayIndexByID(const int& id)
    {
        FTRACE1(id)
 
        for (unsigned int i = 0; i < _class2->size(); i++)
        {
            if ((*_class2)[i]->getId() == id)
                return i;
        }
        return -1; //not found
    }
НО! Для каждого объекта класса( на подобие Class1Array, Class2Array ) приходится писать собственный метод. Как бы мне сделать общий метод для получения индекса?

Пробовал нечто такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    template <class T>
    int getArrayIndexByID(Array<T>* arr, const int& id)
    {
        FTRACE1(id)
 
        for (unsigned int i = 0; i <arr->size(); i++)
        {
            if ((*arr)[i]->getId() == id)
                return i;
        }
        return -1; //not found
    }
Но при вызове
C++
1
getArrayIndexById(Class1Array.get(), 1);
Получаю ошибку 'initializing' : cannot convert from 'void' to 'int'

Господа хорошие подскажите почему такая ошибка и как должен выглядеть метод?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru