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

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

Войти
Регистрация
Восстановить пароль
 
razqr
20 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 22
#1

Класс human. Ссылка на неразрешенный внешний символ - C++

05.05.2014, 21:23. Просмотров 470. Ответов 3
Метки нет (Все метки)

Есть код программы. Но при компиляции он выдает ошибки:
XML
1
2
3
4
5
6
7
8
9
10
11
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall human::human(void)" (??0human@@QAE@XZ) в функции "void __cdecl `dynamic initializer for 'TestHuman''(void)" (??__ETestHuman@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall human::~human(void)" (??1human@@QAE@XZ) в функции "void __cdecl `dynamic atexit destructor for 'TestHuman''(void)" (??__FTestHuman@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall human::setFirstName(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?setFirstName@human@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции "void __cdecl setHumanFirstName(void)" (?setHumanFirstName@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall human::setLastName(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?setLastName@human@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции "void __cdecl setHumanLastName(void)" (?setHumanLastName@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall human::setWeight(int)" (?setWeight@human@@QAEXH@Z) в функции "void __cdecl setHumanWeight(void)" (?setHumanWeight@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall human::setAge(int)" (?setAge@human@@QAEXH@Z) в функции "void __cdecl setHumanAge(void)" (?setHumanAge@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall human::getFirstName(void)" (?getFirstName@human@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) в функции "void __cdecl getHumanFirstName(void)" (?getHumanFirstName@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall human::getLastName(void)" (?getLastName@human@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) в функции "void __cdecl getHumanLastName(void)" (?getHumanLastName@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall human::getWeight(void)" (?getWeight@human@@QAEHXZ) в функции "void __cdecl getHumanWeight(void)" (?getHumanWeight@@YAXXZ)
1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall human::getAge(void)" (?getAge@human@@QAEHXZ) в функции "void __cdecl getHumanAge(void)" (?getHumanAge@@YAXXZ)
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup).
Сам код программы:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <string>
#include "human.h"
 
using namespace std;
 
human TestHuman;
int choice;
string inFirstName;
string inLastName;
int inWeight;
int inAge;
 
int cont = 1;
 
void setHumanFirstName()
{
    cout << "Введите имя человека: ";
    cin >> inFirstName;
    TestHuman.setFirstName(inFirstName);
    cout << endl;
    return;
}
 
void setHumanLastName()
{
    cout << "Введите фамилию человека: ";
    cin >> inLastName;
    TestHuman.setLastName(inLastName);
    cout << endl;
    return;
}
 
void setHumanWeight()
{
    cout << "Введите вес человека: ";
    cin >> inWeight;
    TestHuman.setWeight(inWeight);
    cout << endl;
    return;
}
 
void setHumanAge()
{
    cout << "Введите возраст человека: ";
    cin >> inAge;
    TestHuman.setAge(inAge);
    cout << endl;
    return;
}
 
void getHumanFirstName()
{
    cout << "Имя: " << TestHuman.getFirstName() << endl;
    cout << endl;
    return;
}
 
void getHumanLastName()
{
    cout << "Фамилия: " << TestHuman.getLastName() << endl;
    cout << endl;
    return;
}
 
void getHumanWeight()
{
    cout << "Вес: " << TestHuman.getWeight() << endl;
    cout << endl;
    return;
}
 
void getHumanAge()
{
    cout << "Возраст: " << TestHuman.getAge() << endl;
    cout << endl;
    return;
}
 
void getAllHumanParameters()
{
    cout << "Имя: " << TestHuman.getFirstName() << endl;
    cout << "Фамилия: " << TestHuman.getLastName() << endl;
    cout << "Вес: " << TestHuman.getWeight() << endl;
    cout << "Возраст: " << TestHuman.getAge() << endl;
    cout << endl;
    return;
}
 
void exit()
{
    cont = 0;
    return;
}
 
int main(int argc, char ** argv)
{
    do
    {
        cout << "Класс Человек. Написал Кулхацкер. Версия 1.0" << endl;
        cout << "--------------------------------------------" << endl;
        cout << "1) Задать имя" << endl;
        cout << "2) Задать фамилию" << endl;
        cout << "3) Задать вес" << endl;
        cout << "4) Задать возраст" << endl;
        cout << "--------------------------------------------" << endl;
        cout << "5) Вывести имя" << endl;
        cout << "6) Вывести фамилию" << endl;
        cout << "7) Вывести вес" << endl;
        cout << "8) Вывести возраст" << endl;
        cout << "9) Вывести все" << endl;
        cout << "--------------------------------------------" << endl;
        cout << "0) Выйти" << endl;
        cout << "--------------------------------------------" << endl;
        cout << "> ";
        cin >> choice;
        switch (choice)
        {
        case 1:
            setHumanFirstName();
            break;
        case 2:
            setHumanLastName();
            break;
        case 3:
            setHumanWeight();
            break;
        case 4:
            setHumanAge();
            break;
        case 5:
            getHumanFirstName();
            break;
        case 6:
            getHumanLastName();
            break;
        case 7:
            getHumanWeight();
            break;
        case 8:
            getHumanAge();
            break;
        case 9:
            getAllHumanParameters();
            break;
        case 0:
            exit();
            break;
        }
    } while (cont != 0);
    return 0;
}
human.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
ifndef HUMAN_H
#define HUMAN_H
 
class human
{
public:
    human();
    ~human();
 
    void setFirstName(std::string newFirstName);
    void setLastName(std::string newLastName);
    void setWeight(int newWeight);
    void setAge(int newAge);
 
    std::string getFirstName();
    std::string getLastName();
    int getWeight();
    int getAge();
 
private:
    std::string firstName;
    std::string lastName;
    int weight;
    int age;
};
 
#endif /* HUMAN_H */

Я даже не знаю в чем то ошибка оО... Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2014, 21:23     Класс human. Ссылка на неразрешенный внешний символ
Посмотрите здесь:
Класс "Зачетка": Ссылка на неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++
C++ Ссылка на неразрешенный внешний символ
C++ Ссылка на неразрешенный внешний символ
Ссылка на неразрешенный внешний символ C++
C++ Ссылка на неразрешенный внешний символ
C++ Ссылка на неразрешенный внешний символ
Ссылка на неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
05.05.2014, 21:31     Класс human. Ссылка на неразрешенный внешний символ #2
razqr, Я думаю, что вы должны реализовать тело методов, тогда всё должно заработать.
dimcoder
Полярный
455 / 428 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
05.05.2014, 21:32     Класс human. Ссылка на неразрешенный внешний символ #3
Цитата Сообщение от razqr Посмотреть сообщение
~human();
объявить объявили, но не описали.
Цитата Сообщение от razqr Посмотреть сообщение
TestHuman.setFirstName(inFirstName);
А ГДЕ КОД для setFirstName? ГДЕ ГОД для всего из human.h?!
cosmic
34 / 32 / 0
Регистрация: 29.08.2012
Сообщений: 84
Записей в блоге: 1
05.05.2014, 21:49     Класс human. Ссылка на неразрешенный внешний символ #4
Цитата Сообщение от dimcoder Посмотреть сообщение
А ГДЕ КОД для setFirstName? ГДЕ ГОД для всего из human.h?!
ТС забыл наверно, в процессе обучения и не такое бывает =)
Yandex
Объявления
05.05.2014, 21:49     Класс human. Ссылка на неразрешенный внешний символ
Ответ Создать тему
Опции темы

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