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

Шаблоны функциональных классов, модульное программирование 2 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу, содержащую процедуры формирования и просмотра списка и функцию http://www.cyberforum.ru/cpp-beginners/thread988010.html
Написать программу, содержащую процедуры формирования и просмотра списка и функцию, которая изменяет каждое значение информационной части элемента списка на его квадрат. не могу разобраться совсем плис в С++ помогите
C++ Вычисления по формулам, использование стандартных математических функций Помогите написать программу, а то не понимаю как записать формулу...... http://www.cyberforum.ru/cpp-beginners/thread988005.html
C++ Разделение слов на слоги в С++
Помогите пожалуйста написать программу для курсовой! Очень надо, буду благодарен. Дан текст, состоящий из русских слов. Составить программу, выполняющую разделение его на слоги путём вставки между ними чёрточек. Основные првила разделения на слоги следующие: 1) Две идущие подряд гласные можно разделить, если первой из них предшествует согласная,а за второй идет хотябы одна буква. 2) Две идущие...
C++ Шаблоны функциональных классов, модульное программирование
Пишу лабораторную по C++. Суть состоит в том, что нужно описать шаблоны функциональных классов, методы которых должны быть описаны вне шаблонных классов, и всё это добро должно быть в отдельном от main'a cpp-шнике. Вроде всё написал честь по чести, но компилятор MVS 2012 Ult ругается: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall...
C++ Вижал студио не воспринимает чар http://www.cyberforum.ru/cpp-beginners/thread987976.html
Проблема с тем, что вижал студио не воспринимает мой ввод функций вычитания сложения и проч. Если сделать с помощью банального присваивания, все работает, что я делаю не так? #include "stdafx.h" #include "conio.h" #include <limits.h> #include <windows.h> //Функция проверки корректности переменных int proof (double x) { int y;
C++ Сформировать матрицу по правилу Здраствуйте, помогите пожалуйста написать это в С++ Буду очень благодарна!!! подробнее

Показать сообщение отдельно
serjflint
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 6

Шаблоны функциональных классов, модульное программирование 2 - C++

25.10.2013, 20:32. Просмотров 194. Ответов 0
Метки (Все метки)

Пишу лабораторную на С++. Нужно написать шаблоны функциональных классов, с методами вне этих шаблонов, и всё это в отдельном СРР. Я написал:
main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include "Classes.h"
using namespace std;
 
int main()
{
int a[15], b = 15;
srand( time( NULL ) );
for(int i = 0; i < 15; i++)
a[i] = rand() % 100 + 1;
try
{
Print<int>()(a, b);
cout << Max<int>()(a, b) << endl;
}
catch(Exception ex)
{
cout << ex.Sender << " " << ex.Message << endl;
}
return 0;
}
Classes.cpp:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "Classes.h"
#include <iostream>
using namespace std;
 
template<class T>
bool Less<T>::operator () (const T& Left, const T& Right) const
{
return Left < Right;
}
 
template<class T, class Comparer>
T Min<T, Comparer>::operator() (const T mas[], int cnt) const
{
if(cnt <= 0)
throw Exception("Min", "Empty");
T a = mas[0];
for(int i = 0; i < cnt; i++)
if(Comparer()(mas[i], a))
a = mas[i];
return a;
}
 
template<class T, class Comparer>
T Max<T, Comparer>::operator() (const T mas[], int cnt) const
{
if(cnt <= 0)
throw Exception("Max", "Empty");
T a = mas[0];
for(int i = 0; i < cnt; i++)
if(Comparer()(a, mas[i]))
a = mas[i];
return a;
}
 
template<class T>
T Sum<T>::operator() (const T mas[], int cnt) const
{
if(cnt <= 0)
throw Exception("Sum", "Empty");
T a(0);
for(int i = 0; i < cnt; i++)
a += mas[i];
return a;
}
 
template<class T>
void Print<T>::operator ()(const T mas[], int cnt) const
{
if(cnt <= 0)
throw Exception("Print", "Empty");
for(int i = 0; i < cnt; i++)
cout << mas[i] << " ";
cout << endl;
}
Classes.h:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once
#include <cstring>
 
class Exception;
 
template <class T>
class Less
{
public:
bool operator () (const T& Left, const T& Right) const;
};
 
template <class T, class Comparer = Less<T> >
class Min
{
public:
T operator () (const T mas[], int cnt) const;
};
 
template <class T, class Comparer = Less<T> >
class Max
{
public:
T operator () (const T mas[], int cnt) const;
};
 
template <class T>
class Sum
{
public:
T operator () (const T mas[], int cnt) const;
};
 
template <class T>
class Print
{
public:
void operator () (const T mas[], int cnt) const;
};
 
class Exception
{
public:
char Sender[30];
char Message[100];
Exception(char* sndr, char* msg)
{
strcpy_s(Sender, sndr);
strcpy_s(Message, msg);
}
};
но компилятор жутко ругается:
Кликните здесь для просмотра всего текста
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Print<int>::operator()(int const * const,int)const " (??R?$Print@H@@QBEXQBHH@Z) в функции _main C:\Users\Admin\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\main.obj Win32Project1
Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Max<int,class Less<int> >::operator()(int const * const,int)const " (??R?$Max@HV?$Less@H@@@@QBEHQBHH@Z) в функции _main C:\Users\Admin\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\main.obj Win32Project1
Ошибка 4 error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup C:\Users\Admin\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\MSVCRTD.lib(crtexew.obj) Win32Project1

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