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

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

Войти
Регистрация
Восстановить пароль
 
NinjaNoob
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
#1

c++ ссылка на внешний символ - C++

04.04.2013, 22:56. Просмотров 517. Ответов 3
Метки нет (Все метки)

Тип проэкта: консольное приложение win32

При компиляции появляются следующие ошибки:
C++
1
2
3
4
5
6
7
8
9
10
Ошибка  1   error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl Draw<int>(int,int,int)" (??$Draw@H@@YAHHHH@Z) в функции "int __cdecl _main(void)" (?_main@@YAHXZ)    
C:\Users\Вадим\documents\visual studio 2010\Projects\FigureTemplate\FigureTemplate\FigureTemplate.obj
Ошибка  2   error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl Draw<int>(int,int)" (??$Draw@H@@YAHHH@Z) в функции "int __cdecl _main(void)" (?_main@@YAHXZ) 
C:\Users\Вадим\documents\visual studio 2010\Projects\FigureTemplate\FigureTemplate\FigureTemplate.obj
Ошибка  3   error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl Draw<int>(int)" (??$Draw@H@@YAHH@Z) в функции "int __cdecl _main(void)" (?_main@@YAHXZ)  
C:\Users\Вадим\documents\visual studio 2010\Projects\FigureTemplate\FigureTemplate\FigureTemplate.obj
Ошибка  4   error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup    
C:\Users\Вадим\documents\visual studio 2010\Projects\FigureTemplate\FigureTemplate\MSVCRTD.lib(crtexe.obj)
Ошибка  5   error LNK1120: 4 неразрешенных внешних элементов    
C:\Users\Вадим\documents\visual studio 2010\Projects\FigureTemplate\Debug\FigureTemplate.exe    1
Файл FigureTemplate.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
#include <locale>
#include "figure.h"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    figure fig;
    fig.a=10;
    fig.b=15;
    fig.c=20;
    cout<<"Площадь квадрата="<<Draw(fig.a)<<"\n";
    cout<<"Площадь треугольника="<<Draw(fig.a, fig.b)<<"\n";
    cout<<"Площадь трапеции="<<Draw(fig.a, fig.b, fig.c)<<"\n";
    return 0;
}
Файл figure.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class Type>
Type Draw(Type a); 
 
template <class Type>
Type Draw(Type a, Type b);
 
template <class Type>
Type Draw(Type a, Type b, Type c);
 
struct figure {
    int a;
    int b;
    int c;
};
Файл figure.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include "figure.h"
 
template <class Type>
Type Draw(Type a) {
    return a*a;
}
 
template <class Type>
Type Draw(Type a, Type b) {
    return (a*b)/2;
}
 
template <class Type>
Type Draw(Type a, Type b, Type c) {
    return (a+b)/2*c;
}
гуглил долго
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2013, 22:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос c++ ссылка на внешний символ (C++):

Ссылка на неразрешенный внешний символ - C++
Разбил 3 работающих класса на .h и .cpp файлы. List: шаблонный список. Никаких других классов не включает. Material: Включает только...

Ссылка на неразрешенный внешний символ - C++
Ссылка на неразрешенный внешний символ _main в функции ____tmainCRTStartup В чем проблема?? #include &quot;stdafx.h&quot; #include...

Ссылка на неразрешенный внешний символ - C++
Здравствуйте. Пробую сделать что-то вроде map. Ошибка при создании объекта. #pragma once #include &lt;iostream&gt; template &lt;typename...

Ссылка на неразрешенный внешний символ - C++
Identification_Organisation.h: #pragma once #include&lt;string&gt; using namespace std; class Main_Organisation { int...

Ссылка на неразрешенный внешний символ - C++
//Структура пользователя программой struct User { char* Login; char* Password; }; //Массив пользователей User Array;

Ссылка на неразрешенный внешний символ - C++
Приветствую. Проблема - при компиляции появляется ошибка вида: error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.04.2013, 22:57 #2
NinjaNoob, определения шаблонных функций и классов должны быть в заголовке а не в отдельной единице трансляции. Перенесите все определения в figure.h
1
NinjaNoob
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
04.04.2013, 23:06  [ТС] #3
Toshkarik, спасибо огромное! А почему так? Ну там принцип модульности и всё такое
0
Croessmah
Эксперт CЭксперт С++
13234 / 7506 / 846
Регистрация: 27.09.2012
Сообщений: 18,441
Записей в блоге: 3
Завершенные тесты: 1
04.04.2013, 23:14 #4
Цитата Сообщение от NinjaNoob Посмотреть сообщение
А почему так? Ну там принцип модульности и всё такое
Потому что шаблон должен быть доступен во время инстанцирования
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 23:14
Привет! Вот еще темы с ответами:

Ссылка на неразрешенный внешний символ - C++
Добрый день всем! Помогите пожалуйста студенту, не пойму, то ли лыжи не едут, то ли май месяц на дворе, первая лаба по ООП, подучил теорию,...

Ссылка на неразрешенный внешний символ - C++
Здравствуйте, мне нужна ваша помощь, уже час бьюсь но не могу решить данную проблему. Вообщем, суть задания - записать в функцию...

Ссылка на неразрешенный внешний символ - C++
Ошибки: 1&gt;Щербаков 2.obj : error LNK2019: ссылка на неразрешенный внешний символ &quot;public: __thiscall matrix&lt;int&gt;::~matrix&lt;int&gt;(void)&quot;...

Ссылка на неразрешенный внешний символ - C++
Базовый класс - class area_cl{ public: int a,b; double height; //высота double wight; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2013, 23:14
Ответ Создать тему
Опции темы

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