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

Ошибки линковки при использовании шаблонного класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Использование перегруженного оператора << http://www.cyberforum.ru/cpp-beginners/thread1228321.html
#include <iostream> #include <conio.h> #include <vector> #include <string> #include <algorithm> using namespace std; class Name_pairs { private:
C++ Клетчатая доска - Определить количество способов добраться до последней клетки N-M Привет. Задача такая: дана клетчатая доска NxM (-1000 <= N,M <= 1000), мы находимся в самой первой клетке 1-1. Нужно определить количество способов добраться до последней клетки N-M. Можно двигаться только вправо и вниз, также на доске существуют препятствия с известными координатами, через них пройти нельзя. Входные данные (Пример): 3 3 - размеры доски 1 - кол-во преград 2 2 - координаты... http://www.cyberforum.ru/cpp-beginners/thread1228313.html
C++ Не работает функция sort (vector, vector)
#include <iostream> #include <conio.h> #include <vector> #include <string> #include <algorithm> using namespace std; class Name_pairs { private:
C++ Написать функцию вычисления произведения отрицательных чисел для трех целых аргументов
Написать функцию вычисления произведения отрицательных чисел для трех целых аргументов. Написать операторы вызова функции, с помощью которых определяется и выводится на экран произведение отрицательных чисел для следующих входных данных: a) k, r, y; b) 3, -4, k.
C++ Равномерное дополнение строки пробелами http://www.cyberforum.ru/cpp-beginners/thread1228260.html
Всем доброго времени суток.Имеется задача: Дан текст из нескольких строк. Написать функцию, равномерно дополняющую строку пробелами до определенной длины и с ее помощью отформатировать этот текст. В программе должны быть функции - ввода текста (из нескольких строк); - вывода текста на экран; - форматирования строки текста в соответствии с заданием. Подскажите КАК следует понимать условие...
C++ Указатели на функции (Прата) - не пойму, как это работает Стивен Прата "Язык программирования C++. Лекции и упражнения" 7 глава, стр. 355, листинг 7.18. fun_ptr.cpp // fun_ptr.cpp -- pointers to functions #include <iostream> double betsy(int); double pam(int); // second argument is pointer to a type double function that подробнее

Показать сообщение отдельно
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
16.07.2014, 21:46     Ошибки линковки при использовании шаблонного класса
Есть заголовочной файл Utils.h, в котором определены 2 класса String и ArrayList<T>:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class String : public Comparable<String> {
private:
    friend class Object;
    string data;
public:
    String() {}
    /**/
    ArrayList<String>* split(const String delimiter) const;
    /**/
};
 
template<typename T>
class ArrayList : public Object {
private:
    vector<T>* data = new vector<T>();
 
public:
    ArrayList();
    /**/
    ~ArrayList();
}; 
 
#include "ArrayList.cpp"
При компиляции сообщаются такие ошибки:
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall ArrayList<class String>::ArrayList<class String>(void)" (??0?$ArrayList@VString@@@@QAE@XZ) в функции "public: class ArrayList<class String> * __thiscall String::split(class String)const " (?split@String@@QBEPAV?$ArrayList@VString@@@@V1@@Z)
Проблема в функции "ArrayList<String>* split(const String delimiter)". Вот ее реализация:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ArrayList<String>* String::split(const String delimiter) const {
    ArrayList<String>* parts = new ArrayList<String>();
 
    if (delimiter != "") {
        string::size_type lastPos = data.find_first_not_of(delimiter.data, 0);
        string::size_type pos = data.find_first_of(delimiter.data, lastPos);
        while (string::npos != pos || string::npos != lastPos) {
            parts->add(data.substr(lastPos, pos - lastPos));
            lastPos = data.find_first_not_of(delimiter.data, pos);
            pos = data.find_first_of(delimiter.data, lastPos);
        }
    }
    else {
        parts->add(*this);
    }
 
    return parts;
}
Как, собственно, исправить эту ошибку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru