Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2014, 00:06   #1
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию Шаблон функции.

Доброй ночи.
Есть задание создать шаблон функции.
Project1.cpp
Код:
#include "stdafx.h"
#include "CopyMass.h"
#include <iostream>
#include <conio.h>
using namespace std;

void Out(int *mass, int n)
{
	cout << "Int" << endl;
	for (int i = 0; i < n; ++i)
	{
		cout << mass[i] << ' ';
	}
	cout << endl;
}

void Out(double *mass, int n)
{
	cout << "Double" << endl;
	for (int i = 0; i < n; ++i)
	{
		cout << mass[i] << ' ';
	}
	cout << endl;
}

void Out(char *mass, int n)
{
	cout << "Char" << endl;
	for (int i = 0; i < n; ++i)
	{
		cout << mass[i] << ' ';
	}
	cout << endl;
}

void Copy(int *, int *, int);
void Copy(double *, double *, int);
void Copy(char *, char *, int);

int _tmain(int argc, _TCHAR* argv[])
{
	int a[5], b[5];
	double c[5], d[5];
	char e[5], f[5];
	for (int i = 0; i < 5; i++)
	{
		a[i] = i;
		c[i] = i;
		e[i] = i;
	}
	Copy(a, b, 5);
	Copy(c, d, 5);
	Copy(e, f, 5);
	Out(a,5);
	Out(b, 5);
	Out(c, 5);
	Out(d, 5);
	Out(e, 5);
	Out(f, 5);
	_getch();
	return 0;
}
CopyMass.h
Эта функция копирует массивы.
Код:
template<class Т> Т Copy(Т *a, Т *b, int count)
{
	for(int i = 0; i < count ; ++i)
	{
		b[i] = a[i];
	}
}
Но получаю следующие ошибки:
Код HTML:
Ошибка	4	error LNK1120: неразрешенных внешних элементов: 3	E:\project1\Debug\project1.exe	project1
Код HTML:
Ошибка	3	error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl Copy(char *,char *,int)" (?Copy@@YAXPAD0H@Z) в функции _wmain	E:\project1\project1\project1.obj	project1
и т.д.

Подскажите, как реализовывать такие вещи.
Gdasar вне форума Ответить с цитированием
Старый 19.12.2014, 05:40   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Удалили бы уж объявления функций, а то до шаблона и дело не доходит
Код:
void Copy(int *, int *, int);
void Copy(double *, double *, int);
void Copy(char *, char *, int);
pu4koff вне форума Ответить с цитированием
Старый 19.12.2014, 09:07   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Кстати, шаблонная функция объявлена возвращающая результат типа Т а на деле ничего не возвращает.
waleri вне форума Ответить с цитированием
Старый 19.12.2014, 10:18   #4
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

Замечания учел и исправил код, но получил ошибку:
Код HTML:
Ошибка	1	error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию	e:\project1\project1\copymass.h	7	1	project1
Так и не понял как ее решить.
Gdasar вне форума Ответить с цитированием
Старый 19.12.2014, 12:17   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Подсказка:
Вот прототип старой функции:
void Copy(char *, char *, int);
Сравините с вашим и найдите отличия.
waleri вне форума Ответить с цитированием
Старый 19.12.2014, 23:22   #6
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

waleri дайте еще подсказку. Я не понимаю.
Gdasar вне форума Ответить с цитированием
Старый 21.12.2014, 10:56   #7
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

waleri,что-то до меня долго доходит.
Код:
template<class Т> 
void Copy(Т *a, Т *b, int count)
{
}
Спасибо за помощь.

Последний раз редактировалось Gdasar; 21.12.2014 в 11:10.
Gdasar вне форума Ответить с цитированием
Старый 21.12.2014, 13:10   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Зато хорошо материал усвоится.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблон функции Romario92 C++ Builder 1 31.03.2011 12:28
c++ шаблон функции pavel282 Помощь студентам 2 24.10.2010 19:33
Шаблон функции Galeodor Общие вопросы C/C++ 4 27.10.2009 22:00
С++ Шаблон функции napanin Общие вопросы C/C++ 1 11.06.2009 19:07
С++ Шаблон функции napanin Помощь студентам 0 11.06.2009 18:53