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

подключение hpp и срр,что то не правильно сделал,классы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 15:04     подключение hpp и срр,что то не правильно сделал,классы #1
сначала создаю hpp файл,в нем создаю интерфейс класса,потом срр файл создаю,в нем класс начинаю определять,а в меин.срр создаю объект..вобщем вот коды
employee.hpp
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
#include <windows.h>
#include <iostream> 
 
class employee{
 
    int age,years,salary;
    public:
 
        employee(int cage,int cyears,int calary){
        age=cage;
        years=cyears;
        salary=calary;      
        }
        ~employee(){}
 
        int getage() const;
        int setage(int sage);
        int getyears() const;
        int setyears(int sage);
        int getsal() const;
        int setsal(int sage);
 
        
 
};
employee.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int employee::getage()const{
        return age;
        }
        int setage(int sage){
        return age=sage;
        }
    int employee::getyears()const{
        return years;
        }
        int employee::setyears(int syears){
        return years=syears;
        }
 
            int getsal()const{
        return salary;
        }
        int employee::setsal(int ssal){
        return salary=ssal;
                }
main();
C++
1
2
employee jon(20,1,1000);
cout<<"age "<<jon.getage()<<" salary "<<jon.getsal()<<" years "<<jon.getyears()<<endl;
ошибки
Error 1 error C2065: 'age' : undeclared identifier c:\Documents and Settings\AG\My Documents\Visual Studio 2008\Projects\proba\proba\employee.cpp 9 proba
Error 2 error C2270: 'getsal' : modifiers not allowed on nonmember functions c:\Documents and Settings\AG\My Documents\Visual Studio 2008\Projects\proba\proba\employee.cpp 18 proba
Error 3 error C2065: 'salary' : undeclared identifier c:\Documents and Settings\AG\My Documents\Visual Studio 2008\Projects\proba\proba\employee.cpp 19 proba
Error 20 error C2065: 'age' : undeclared identifier c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\employee.cpp 9 proba
Error 21 error C2270: 'getsal' : modifiers not allowed on nonmember functions c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\employee.cpp 18 proba
Error 22 error C2065: 'salary' : undeclared identifier c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\employee.cpp 19 proba
все эти ошибки жалуются на employee.cpp файл,мол не знает че это такое,хотя я подключил интерфейс

Добавлено через 2 минуты
поправил employee.cpp файл,там забыл перед функиями написать employee::....
вт написал,теперь хуже ошибки
Error 1 error LNK2005: "public: int __thiscall employee::setsal(int)" (?setsal@employee@@QAEHH@Z) already defined in code.obj employee.obj proba
Error 2 error LNK2005: "public: int __thiscall employee::getsal(void)const " (?getsal@employee@@QBEHXZ) already defined in code.obj employee.obj proba
Error 3 error LNK2005: "public: int __thiscall employee::setyears(int)" (?setyears@employee@@QAEHH@Z) already defined in code.obj employee.obj proba
Error 4 error LNK2005: "public: int __thiscall employee::getyears(void)const " (?getyears@employee@@QBEHXZ) already defined in code.obj employee.obj proba
Error 5 error LNK2005: "public: int __thiscall employee::setage(int)" (?setage@employee@@QAEHH@Z) already defined in code.obj employee.obj proba
Error 6 error LNK2005: "public: int __thiscall employee::getage(void)const " (?getage@employee@@QBEHXZ) already defined in code.obj employee.obj proba
Error 7 fatal error LNK1169: one or more multiply defined symbols found C:\Documents and Settings\AG\My Documents\Visual Studio 2008\Projects\proba\Release\proba.exe 1 proba
а че за ошибки,и где компилятор не говорит,при нажатии на ошибку
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 15:04     подключение hpp и срр,что то не правильно сделал,классы
Посмотрите здесь:

C++ Правильно ли сделал
C++ срр файл в нутри срр
C++ Правильно ли я всё сделал? CGI и Visual C++
C++ правильно ли я сделал задание?
C++ Проверьте пожалуйста, правильно ли я сделал задание
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
07.03.2010, 15:18     подключение hpp и срр,что то не правильно сделал,классы #2
Линковщик не видит реализации ф-ций
int getyears() const;
int setyears(int sage);
int getsal() const;
int setsal(int sage);
в .cpp файле.
Добавь реализацию.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 15:48  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #3
SerЁga, что за реализация и как добавить
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 16:02     подключение hpp и срр,что то не правильно сделал,классы #4
А у тебя в файле emloye.cpp где директива #include "emloye.hpp" ?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 16:09  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #5
Amarted, там просто не скопировал...есть она там
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
07.03.2010, 17:32     подключение hpp и срр,что то не правильно сделал,классы #6
Добавь в .cpp файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int employee::getyears()const{
               return 0;
               }
int employee::setyears(int sage)
{
               return sage;
            }
 
int employee::getsal()const{
               return 0;
                }
 
int employee::setsal(int sage)
{
               return sage;
            }
Эти ф-ции ничего делать не будут, но ошибки должны уйти.
А потом в ф-циях напишишь то что надо.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
07.03.2010, 20:26     подключение hpp и срр,что то не правильно сделал,классы #7
есть еще вариант: в .hpp написать после объявления заголовочных файлов
#ifndef __employee
#define __employee
и в самом конце файла - #endif
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 20:56  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #8
Цитата Сообщение от Vorona Посмотреть сообщение
#ifndef __employee
#define __employee
в книгах такое нету
Цитата Сообщение от SerЁga Посмотреть сообщение
Эти ф-ции ничего делать не будут, но ошибки должны уйти.
А потом в ф-циях напишишь то что надо.
почему?...эти функции возвращают числа
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
07.03.2010, 22:44     подключение hpp и срр,что то не правильно сделал,классы #9
Цитата Сообщение от МедведЪ Посмотреть сообщение
Сообщение от Vorona Посмотреть сообщение
#ifndef __employee
#define __employee
в книгах такое нету
в книгах много чего нету, но эти директивы должны быть и такой способ посоветовал преподователь, впринципе мне часто помогало.. и в конце #endif не забудь
можно еще указать полный путь нахождения .hpp файла только в таких <> скобках, а не ковычках или посмотреть настройки компилятора..
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 22:45  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #10
Цитата Сообщение от Vorona Посмотреть сообщение
в книгах много чего нету, но эти директивы должны быть и такой способ посоветовал преподователь, впринципе мне часто помогало.. и в конце #endif не забудь
можно еще указать полный путь нахождения .hpp файла только в таких <> скобках, а не ковычках или посмотреть настройки компилятора..
спасибо за инфу,но зы я по книге прохожу,все имет свое место
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 22:57     подключение hpp и срр,что то не правильно сделал,классы #11
Странно у меня всё работает, причем без всяких директив типа #define и тд... только вот не пойму зачем тебе #include <windows.h>? напиши полный код всех трёх файлов, включая меин. Если у тебя выходят такие ошибки то скорей всего какойто файл у тебя включается дважды.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
07.03.2010, 23:26     подключение hpp и срр,что то не правильно сделал,классы #12
хм, скомпилировал твой код (с исправлениями employee:: ), все работает)

только main у меня в одном файле с инициализациями членов класса

вспомнил, а ты создал проект?
вот распределил все по трем файлам, не работало, а создал проект и подключил туда main.cpp employee.cpp, все работает
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.03.2010, 23:30     подключение hpp и срр,что то не правильно сделал,классы #13
Цитата Сообщение от МедведЪ Посмотреть сообщение
в книгах такое нету
Любой стандартный заголовочный файл открой. Лежат где-нибудь, вроде c:\Program Files\Microsoft Visual Studio 8\VC\include.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.03.2010, 23:36  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #14
Цитата Сообщение от easybudda Посмотреть сообщение
Любой стандартный заголовочный файл открой. Лежат где-нибудь, вроде c:\Program Files\Microsoft Visual Studio 8\VC\include.
зачем Оо
Delphin_KKC
UNIX-way
 Аватар для Delphin_KKC
710 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.03.2010, 00:07     подключение hpp и срр,что то не правильно сделал,классы #15
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот в таком виде всё 100% работает:

employee.hpp
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
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class employee
{
      int age,years,salary;
      public:
 
      employee(int cage,int cyears,int calary)
      {
         age=cage;
         years=cyears;
         salary=calary;          
      }   
      employee()//конструктора по умолчанию больше нет! Нужно написать свой
      {
         age=0;
         years=0;
         salary=0;          
      }
      ~employee(){}
 
      int getage();
      void setage(int sage);
      int getyears();
      void setyears(int sage);
      int getsal();
      void setsal(int sage);              
};
#endif //EMPLOYEE_H
employee.cpp
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
#include "employee.h"
int employee::getage()
{
    return age;
}
 
void employee::setage(int sage)
{
    age=sage;
}
 
int employee::getyears()
{
    return years;
}
 
void employee::setyears(int syears)
{
    years=syears;
}
 
int employee::getsal()
{
    return salary;
}
 
void employee::setsal(int ssal)
{
    salary=ssal;
}
main();
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include "employee.h"
 
using namespace std;
 
int main(int argc, char *argv[])
{
    employee jon(20,1,1000);
    cout<<"age "<<jon.getage()<<" salary "<<jon.getsal()<<" years "<<jon.getyears()<<endl;
    system("PAUSE");
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от МедведЪ Посмотреть сообщение
зачем Оо
Чтоб случайно два раза не объявить одно и тоже.
А то иногда бывает так:

A.h
C++
1
#include "B.h"
main.cpp
C++
1
2
#include "A.h"
#include "B.h"
И если в B.h не будет тех ifndef'ов - то получится что-то типа
C++
1
2
int x;
int x;
На что компилятор возмутится.
Один раз я так попал. С тех пор ifndef постоянно юзаю.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 00:12  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #16
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
На что компилятор возмутится.
Один раз я так попал. С тех пор ifndef постоянно юзаю.
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.03.2010, 00:48     подключение hpp и срр,что то не правильно сделал,классы #17
Цитата Сообщение от МедведЪ Посмотреть сообщение
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
Читай правильные книги!
КиР 4.11.3. Условная компиляция.
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 02:52     подключение hpp и срр,что то не правильно сделал,классы #18
Цитата Сообщение от МедведЪ Посмотреть сообщение
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
Потому что книги это книги, часто бывает и такое, что читаешь пол книги, в главах описываються разные вопросы, приводятся в качестве примера код, а потом, грубо говоря под конец книги ты узнаешь, что все эти коды не компилируются потому что в них не используеться, казалосьбы такая ерунда, как стандартное простраство имент( тобеж std) и тебе прямым текстом пишут что все это сделали специально чтоб, как бы не нагружать читателя, или что либо подобное... так что просто как ты хотел, следовать книге, это можно сказать как минимум не разумно, в том смысле что если об этом не сказано в этой книге, то об этом сказано в другой книге, и зацикливаться на той книге которую ты сейчас читаешь, очень даже не стоит! ( если что не понятно здесь то поищи это там...). Я сам прошел через это, может кто со мной и не согласится но такое уж моё мнение, прислушатся к нему или нет, это дело сугубо личное.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 09:55  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #19
easybudda, ну спс...снова из за книг начинаю разочароваться в С++ и не любить....так же как и стало с явой...какая то тупая книга которая сразу начинается с классов...и тупая прога нетбинс,который не разрешает менять стд коды актив х-ов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2010, 11:42     подключение hpp и срр,что то не правильно сделал,классы
Еще ссылки по теме:

Правильно ли я сделал пример C++
C++ Архитектура программы. Правильно ли сделал?
C++ Правильно я сделал программу по уравнению?

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

Или воспользуйтесь поиском по форуму:
Delphin_KKC
UNIX-way
 Аватар для Delphin_KKC
710 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.03.2010, 11:42     подключение hpp и срр,что то не правильно сделал,классы #20
Цитата Сообщение от МедведЪ Посмотреть сообщение
...снова из за книг начинаю разочароваться в С++ и не любить...
Всегда говорил что самый лучший учитель - компилятор.
А книги - это что-то типа русского хелпа к нему
Yandex
Объявления
08.03.2010, 11:42     подключение hpp и срр,что то не правильно сделал,классы
Ответ Создать тему
Опции темы

Текущее время: 00:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru