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

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

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

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

26.04.2014, 23:25. Просмотров 546. Ответов 3
Метки нет (Все метки)

Уважаемые форумчане, столкнулся с проблемой вставки объекта класса как параметр в контейнер map. Привожу ниже код как пытался сделать. Компилятор использую visual studio 2012. При построении проекта выдает следующие ошибки :

1>Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall Staff::~Staff(void)" (??1Staff@@UAE@XZ) в функции "public: __thiscall std:: pair < unsigned int const ,class Staff>::~pair<unsigned int const ,class Staff>(void)" (??1?$pair@$$CBIVStaff@@@std@@QAE@XZ)
1>C:\Users\dima\Documents\Visual Studio 2012\Projects\ConsoleApplication2\Debug\ConsoleApplication2.exe : fatal error LNK1120: неразрешенных внешних элементов: 1

Ещё возник вопрос, как можно проинициализировать контейнер в конструкторе класса, а также уничтожить в деструктуре.

Помогите пожалуйста с решением проблемы.
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
55
56
57
58
59
# include <iostream>
# include <string>
# include <map>
using namespace std;
 
 
class Staff{
private: 
    string Name; 
    string LastName; 
    string Job; 
    double Salary;
public: 
    Staff(){
        Name="\0";
        LastName="\0";
        Job="\0";
    }
    ~Staff();
    Staff(const Staff &obj){
        Name=obj.Name; 
        LastName=obj.LastName;
        Job=obj.Job;
        Salary=obj.Salary;
    }
    friend istream &operator >>(istream &, Staff &);
    friend ostream &operator <<(ostream &, const Staff &);
    Staff *Clone()const{return new Staff(*this);}
};
 
class Company{
private: 
    map<unsigned int, Staff> staff;
public: 
    Company();
    ~Company();
    void Add();
};
 
istream &operator >>(istream &is, Staff &t){
    getline(is, t.Name);
    getline(is, t.LastName);
    getline(is, t.Job);
    is>>t.Salary;
    return is;
}
 
ostream &operator <<(ostream &os, const Staff &t){
    os << t.Name << t.LastName << t.Job << t.Salary ;
    return os;
}
 
int main(){
    map<unsigned int, Staff> my_map;
    Staff obj;
    cin>>obj;
    my_map.insert(pair<unsigned int, Staff>(1, obj));
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 23:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Map stl c++ ссылка на неразрешенный внешний символ (C++):

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

Ссылка на неразрешенный внешний символ - C++
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;void __cdecl phyRestoreConsoleAttributes(void)&quot;...

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

Ссылка на неразрешенный внешний символ - C++
Что это? Как я понял это какая то переменная/функция, которая некотором образом не видна другой функции. Но почему ошибка возникает на...

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

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

3
Убежденный
Системный программист
Эксперт С++
15619 / 7128 / 1128
Регистрация: 02.05.2013
Сообщений: 11,568
Записей в блоге: 1
Завершенные тесты: 1
26.04.2014, 23:32 #2
Пишут же прямым текстом, да еще на русском:

Цитата Сообщение от Dima_Bro Посмотреть сообщение
ссылка на неразрешенный внешний символ "public: virtual __thiscall Staff::~Staff(void)"
Деструктор Staff не реализован. Контейнер не может работать с пользовательскими
типами, у которых нет деструктора. Деструктор должен быть, хоть какой-то.
0
Dima_Bro
1 / 1 / 0
Регистрация: 09.04.2014
Сообщений: 16
26.04.2014, 23:54  [ТС] #3
Убежденный, спасибо, действительно что-то тупанул я

Добавлено через 13 минут
А можно ли проинициализировать контейнер в конструкторе? Или по-идее у контейнера при создание есть свой описанный конструктор => в моём классе Сompany инициализировать его не имеет смысла?
0
Убежденный
Системный программист
Эксперт С++
15619 / 7128 / 1128
Регистрация: 02.05.2013
Сообщений: 11,568
Записей в блоге: 1
Завершенные тесты: 1
27.04.2014, 22:43 #4
Цитата Сообщение от Dima_Bro Посмотреть сообщение
А можно ли проинициализировать контейнер в конструкторе? Или по-идее у контейнера при создание есть свой описанный конструктор => в моём классе Сompany инициализировать его не имеет смысла?
Это не требуется.
У контейнера, как и у любого нормально спроектированного класса,
есть свой конструктор, деструктор, копи-конструктор и оператор
присваивания. Вам нужно лишь объявить его в классе, все остальное
контейнер "возьмет на себя".
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 22:43
Привет! Вот еще темы с ответами:

Ссылка на неразрешенный внешний символ - C++
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: struct EQUIPMENT_ESSENCE * __thiscall...

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

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

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


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

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

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