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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
#1

Шаблонн класса - C++

09.09.2012, 14:58. Просмотров 269. Ответов 4
Метки нет (Все метки)

Array.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef ARRAY_H
#define ARRAY_H
template<class type>
class Array
{
public:
    Array();
    void func();
protected:
    int size;
};
Array.cpp
C++
1
2
3
4
5
6
#include "Array.h"
template<class type>
Array<type>::Array()
{
 
}
main.cpp
C++
1
2
3
4
5
6
7
8
#include <QtCore/QCoreApplication>
#include "Array.h"
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    Array<int> a;
    return app.exec();
}
не работает
пишет E:\Qt\array\main.cpp:6: error: undefined reference to `Array<int>::Array()'
Array.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef ARRAY_H
#define ARRAY_H
template<class type>
class Array
{
public:
    Array();
    void func();
protected:
    int size;
};
template<class type>
Array<type>::Array()
{
 
}
 
#endif // ARRAY_H
Array.cpp - нету
main.cpp - тот же
- работает
В чём ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 14:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблонн класса (C++):

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Как обраиться к функции класса через другую функцию класса (друга)? - C++
Пример кода: #include &lt;iostream&gt; using namespace std; class Sasha; class Petya { public: friend class Sasha; ...

Удаление экземпляра класса в функции самого класса (Ошибка при отладке) - C++
Допустим, у нас есть класс Buffer, который хранит в себе указатель на класс некоторой матрицы и количество этих указателей refcounter ...

Объявление объекта класса fstream в качестве статической компоненты другого класса - C++
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Как получить private переменную класса, функцей членом другого класса - C++
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...

Приём константных векторов класса, как аргументов в методе другого класса - C++
Есть такой класс: class Order { private: int numberOrder; map &lt;string, int&gt; catalogDish; double totalCost; public: ...

4
DU
1485 / 1131 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.09.2012, 15:01 #2
что-то очень много людей, кто шаблоны пишет сталкиваются с этим. неужели в книгах не пишут, что реализация шаблонов не должна выносится в cpp файлы, все (декларация и имплементация) должно быть в одном h файле.
1
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
09.09.2012, 15:04  [ТС] #3
не а, не пишут(((
а зачем так сделано?
0
DU
1485 / 1131 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.09.2012, 15:06 #4
из-за их особенностей, механизма инстанцирования и прочее. за деталями лучше в какую-нибудь продвинутую литературу заглянуть. если пока не до этого, то придется запомнить как данное и смириться с этим
1
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
09.09.2012, 15:10  [ТС] #5
ну впринципе понятно
0
09.09.2012, 15:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 15:10
Привет! Вот еще темы с ответами:

внук родительского класса не может работать с полями дедовского класса; почему? - C++
Не всё так просто на самом деле. Непонятно, какую роль во всём этом играют шаблоны. Но к делу. Вот код: class base { public: base...

Как получить доступ к методам класса, который содержится в векторе класса - C++
Пишу дерево с любым количеством наследников. В классе Thread содержится вектор классов Thread. При попытке просмотра первого элемента в...

Проверка создания объекта класса BBB из класса AAA и работа с ним - C++
#define @param2; // объявили для выяснения случая: нужен новый или использовать существующий. Class AAA { private: void...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru