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

Перегрузка оператора [] и шаблоны. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод /вывод на С++ http://www.cyberforum.ru/cpp-beginners/thread131272.html
мне нужна программа которая сможет с введённых слов находить гласных буквы заранее спасибо))
C++ Перегрузка умножения Создать класс, описывающий треугольники. Перегрузить операцию умножения так, чтобы можно было получить треугольник, подобный данному. Коэффициент подобия задается с клавиатуры. Очень нужна помощь ибо не понимаю чо да как=( Треугольник можно задать тремя стоонами или тремя точками.мя точками. http://www.cyberforum.ru/cpp-beginners/thread131256.html
Текст и поиск слова C++
хай.. жудко извиняюсь, задача с моей учебной программы, думаю многие даже не захотят помочь, но.. нужно ввести предложение и найти в нем слово (алгоритм "прямой поиск строчки") массивы S (текст) и P (слово) причем m<n ! так вот я начал реализацию но уже сразу у меня появилась ошибка.. я ввожу ТЕКСТ и если текст ввожу с пробелом то, когда я начинаю печатать слово - програма закрывается ...
C++ Проверка на ошибку. Транспонирование матрицы
char S; void transponirovanie(int**mass1, int stolb, int str) { int **mass2; int i,j; mass2=(int**)malloc(sizeof(int*)*stolb); for(i=0;i<stolb;i++) mass2=(int*)malloc(sizeof(int)*str); for (i=0;i<str;i++) for (j=0;j<stolb;j++)
C++ Запись структур в файлы!!! http://www.cyberforum.ru/cpp-beginners/thread131242.html
С++ Создать файл и заисать в него структурированные данные, вывести файл на экран. Структура "Автомобиль" -марка; -год выпуска; -цена; -цвет. Удалить все элементы у которых год выпуска меньше заданого. Добавить элемент с номером К.
C++ Компилятор С++ посоветуйте пожалуста среду для С++ хорошую. подробнее

Показать сообщение отдельно
-Xeon-
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 26

Перегрузка оператора [] и шаблоны. - C++

17.05.2010, 21:37. Просмотров 697. Ответов 6
Метки (Все метки)

Всем доброго времени суток!

Проблема такая: есть класс сVector

C++
1
2
3
4
5
6
7
8
9
10
template <class T, int Size>
class cVector
{
    T *m_data;
 
public:
    cVector();
    ~cVector();
    T &operator[](int index);
};
Его методы описанны так:

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
30
template <class T, int Size>
cVector<T, Size>::cVector()
{
    m_data = new int [Size];
}
 
template <class T, int Size>
cVector<T, Size>::~cVector()
{
    delete [] m_data;
}
 
template <class T, int Size>
T &cVector<T, Size>::operator[](int index)
{
    if(index < 0)
    {
        MessageBox(0, L"Error: Index < 0!", "Error", MB_OK);
 
        return m_data[0];
    }
    if(index > Size)
    {
        MessageBox(0, L"Error: Index > Size!", "Error", MB_OK);
 
        return m_data[0];
    }
 
    return m_data[index];
}
В майне:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include "Vector.h"
 
void main()
{
    cVector<int, 10> a();
 
    for(int i = 0; i < 10; i++)
    {
        a[i] = i + 1;
    }
 
    int i;
    std::cin >> i;
}
При попытки компелировать выдает ошибку:

error C2109: для индекса требуется массив или указател

В чём причина?

Добавлено через 46 минут
А если я чуток меняю майн:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void main()
{
    cVector<int, 10> a; // поменял тут, было так cVector<int, 10> a();
 
    for(int i = 0; i < 10; i++)
    {
        a[i] = i + 1;
    }
 
    int i;
    std::cin >> i;
}
То получаю кучу неразрешённых ссылок:

1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::~cVector<int,10>(void)" (??1?$cVector@H$09@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int & __thiscall cVector<int,10>::operator[](int)" (??A?$cVector@H$09@@QAEAAHH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::cVector<int,10>(void)" (??0?$cVector@H$09@@QAE@XZ) в функции _main

Люди подскажите в чём проблема?

Добавлено через 33 секунды
А если я чуток меняю майн:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void main()
{
    [COLOR="Red"]cVector<int, 10> a; // поменял тут, было так cVector<int, 10> a();[/COLOR]
 
    for(int i = 0; i < 10; i++)
    {
        a[i] = i + 1;
    }
 
    int i;
    std::cin >> i;
}
То получаю кучу неразрешённых ссылок:

1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::~cVector<int,10>(void)" (??1?$cVector@H$09@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int & __thiscall cVector<int,10>::operator[](int)" (??A?$cVector@H$09@@QAEAAHH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::cVector<int,10>(void)" (??0?$cVector@H$09@@QAE@XZ) в функции _main

Люди подскажите в чём проблема?

Добавлено через 43 секунды
А если я чуток меняю майн:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void main()
{
    [COLOR="Red"]cVector<int, 10> a; // поменял тут, было так cVector<int, 10> a();[/COLOR]
 
    for(int i = 0; i < 10; i++)
    {
        a[i] = i + 1;
    }
 
    int i;
    std::cin >> i;
}
То получаю кучу неразрешённых ссылок:

1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::~cVector<int,10>(void)" (??1?$cVector@H$09@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int & __thiscall cVector<int,10>::operator[](int)" (??A?$cVector@H$09@@QAEAAHH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall cVector<int,10>::cVector<int,10>(void)" (??0?$cVector@H$09@@QAE@XZ) в функции _main

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