| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ошибка в классе |
| Автор: Berkut 24.3.2004, 21:24 |
| Саздал класс: employee.h #ifndef EMPLOYEE_H #define EMPLOYEE_H #include <string> using namespace std; namespace def_employee { class Employee { public: Employee(); Employee(string a); string get_a(); void change_a( string new_a ); }; } #endif Создал файл реализации класса: #include "Employee.h" #include <string.h> #include<iostream> Employee::get_a(string a) { cout<<a<<endl; return 0; } компилятор выдает такую шибку: 'Employee' : is not a class or namespace name (указывает на строчку Employee::get_a(string a)) |
| Автор: Stalk 24.3.2004, 22:57 | ||||||
|
| Автор: Berkut 24.3.2004, 23:17 |
| Все равно там же ошибка |
| Автор: Coocky 24.3.2004, 23:27 | ||
Попробуй создай Inline функцию
|
| Автор: Berkut 24.3.2004, 23:39 |
| С Inline функцией этой ошибки нет, но мне надо именно без Inline функции |
| Автор: bel_nikita 25.3.2004, 00:35 | ||||
Berkut
А namespace где потерял?? Добавь using namespace def_employee; |
| Автор: ??? 25.3.2004, 18:10 |
| Чего-то я понять немогу. Определение функции такое: string get_a(); А сама функция описывается как: Employee::get_a(string a) { cout<<a<<endl; return 0; } ??? |
| Автор: Berkut 25.3.2004, 18:37 |
| bel_nikita спасибо за помощь, но вот теперь еще одна ошибка, правда теперь не понятно где: #ifndef EMPLOYEE_H #define EMPLOYEE_H #include <string> using namespace std; namespace def_employee { class Employee { public: Employee(); Employee(string a); string get_a(); void change_a( string new_a ); }; } #endif Создал файл реализации класса: #include "Employee.h" #include <string.h> #include<iostream> using namespace def_employee; Employee::get_a(string a) { cout<<a<<endl; return 0; } Ну с сам main() #include<iostream> #include "Employee.h" #include "HourlyEmployee.h" using namespace def_employee; main() { Employee a; string a="dsgfsg"; a.get_a(a); return 0; } Так вот компилятор выдает такую штуку: error LNK2001: unresolved external symbol "public: __thiscall def_employee::Employee::Employee(void)" (??0Employee@def_employee@@QAE@XZ) fatal error LNK1120: 1 unresolved externals |
| Автор: sergejzr 25.3.2004, 18:39 |
| Добавь Employee.cpp в свой проект. |
| Автор: Berkut 25.3.2004, 18:47 |
| Непомогает, таже ошибка |
| Автор: sergejzr 25.3.2004, 18:58 | ||||||
| Всё ясно! В теле класса ты задекларировал
А в .сpp
А следует:
Определяйся, что функция получает, а что отдаёт |
| Автор: Berkut 25.3.2004, 19:21 |
| sergej.z ,непомогает, таже ошибка, для простототы я пока даже string опустил. |
| Автор: ??? 25.3.2004, 19:23 | ||||||||
Ага, только я это уже до тебя сказал. |
| Автор: Berkut 25.3.2004, 19:29 |
| Пусть будет без string: get_a(); Ошибка осталась то |
| Автор: Fantasist 25.3.2004, 20:05 | ||
У конструктора нету тела. |
| Автор: sergejzr 25.3.2004, 20:07 | ||
| А где в .срр конструктора итд? Вот готовый проект для MSVC++ http://www.iwi-iuk.org:8081/employee.zip Добавлено @ 20:08 Во, Fantasist опередил Добавлено @ 20:13 ???
Ага, только ошибка другая была |
| Автор: Berkut 25.3.2004, 20:32 |
| Спасибо большое, вроде разобрался |
| Автор: shadowmaan 25.3.2004, 21:27 |
| В файле реализации не надо писать using namespace def_employee; надо включить реализацию в этот namespace, т. е. namespace def_employee { string Employee::get_a() { //.... } } Извиняюсь. Ерунду сказал. Больше не буду |
| Автор: Fantasist 25.3.2004, 22:28 |
| Кстати using namespace как раз таки на мой взгляд использовать можно только в файлах реализации. Да и то аккуратно. Если везде использовать using namespace, то смысл namespace'ов почти пропадает. Хотя, конечно, в небольших проектах это пофиг. |
| Автор: Borisff2003 26.3.2004, 06:20 |
| И у второго конструктора, тоже нет тела и у change_a |