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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать структуру AEROFLOT для хранения следующей информации номер рейса название пункта назначения рейса тип самолета http://www.cyberforum.ru/cpp-beginners/thread453680.html
Сформировать структуру AEROFLOT для хранения следующей информации: · номер рейса; · название пункта назначения рейса; · тип самолета; · цена билета. Ввести с клавиатуры информацию для нескольких рейсов (к-во заранее не определено) и сохранить ее в бинарном файле "5.dat". Подготовьте файл, в котором будет не менее 20 корректных записей. Заголовок темы изменен модератором. Он должен...
C++ Дана квадратная таблица a[1:n,1:n]. Переставить местами строки 1 и 2, 3 и 4 и т.д. Если n нечетно, то последняя строка остается на месте. помогите разобраться с пару задачками. 1)Дана квадратная таблица a. Переставить местами строки 1 и 2, 3 и 4 и т.д. Если n нечетно, то последняя строка остается на месте. 2)4 Дан двумерный массив размерностью 5 х 6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца 3)7 Даны два... http://www.cyberforum.ru/cpp-beginners/thread453660.html
Последовательность чисел C++
Вводится последовательность из N вещественных чисел. Определить среднее арифметическое среди элементов последовательности, кратных 7.
C++ Восстановить исходную матрицу и напечатать по строкам.
Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам. пожалуйста помогите, очень надо( буду признателен(
C++ Запись символов по диагонали http://www.cyberforum.ru/cpp-beginners/thread453635.html
Здравствуйте! Помогите со следующей проблемой: Когда я включаю отладку мне нужно чтобы набор символов которые я ввожу выходил по диагонали, а не в строчку Вот пример программы. Только она выводит строчкой а не по главной диагонали дисплея //Моя программа!!! #include <stdio.h> #include <conio.h> int main(void) { int c, i=0;
C++ Составить программу, в которой будут вводиться 7 - 10 строк таблицы по структуре данных Составить программу, в которой будут вводиться 7 - 10 строк таблицы по структуре данных Буддийские монастыри Японии периода Нара ( Название,Школа,Количество монахов,Площадь земель(га) ) #include <stdio.h> #include <string.h> #include <iostream> /* Описание структуры, которая представляет монастырь */ struct mon { подробнее

Показать сообщение отдельно
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
27.02.2012, 14:28     Шаблонный метод класса
Имеется следующая ситуация:
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'

Господа хорошие подскажите почему такая ошибка и как должен выглядеть метод?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru