Форум программистов, компьютерный форум 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++ Проверьте пожалуйста, правильно ли я сделал задание
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 21:38  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #21


Добавлено через 8 часов 51 минуту
все сделал как сказали...
ошибки
Error 1 error LNK2005: "public: int __thiscall rab::getage(void)" (?getage@rab@@QAEHXZ) already defined in code.obj rab.obj
Error 2 error LNK2005: "public: void __thiscall rab::setage(int)" (?setage@rab@@QAEXH@Z) already defined in code.obj rab.obj
Error 3 error LNK2005: "public: int __thiscall rab::getyears(void)" (?getyears@rab@@QAEHXZ) already defined in code.obj rab.obj
Error 4 error LNK2005: "public: void __thiscall rab::setyears(int)" (?setyears@rab@@QAEXH@Z) already defined in code.obj rab.obj
Error 5 error LNK2005: "public: int __thiscall rab::getsal(void)" (?getsal@rab@@QAEHXZ) already defined in code.obj rab.obj
Error 6 error LNK2005: "public: void __thiscall rab::setsal(int)" (?setsal@rab@@QAEXH@Z) already defined in code.obj rab.obj
Error 7 fatal error LNK1169: one or more multiply defined symbols found D:\C++ projects\proba\Debug\proba.exe 1

меин
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <windows.h>
#include<iostream>
#include "rab.cpp"
using namespace std;
int main(){
 
rab jon(20,1,1000);
    cout<<"age "<<jon.getage()<<" salary "<<jon.getsal()<<" years "<<jon.getyears()<<endl;
 
 
 
system("pause");
return 0;
}
раб.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
28
29
#ifndef RAB_H
#define RAB_H
class rab
{
      int age,years,salary;
      public:
 
      rab(int cage,int cyears,int calary)
      {
         age=cage;
         years=cyears;
         salary=calary;          
      }   
      rab()//конструктора по умолчанию больше нет! Нужно написать свой
      {
         age=0;
         years=0;
         salary=0;          
      }
      ~rab(){}
 
      int getage();
      void setage(int sage);
      int getyears();
      void setyears(int sage);
      int getsal();
      void setsal(int sage);              
};
#endif //RAB_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
28
29
30
#include "rab.h"
int rab::getage()
{
    return age;
}
 
void rab::setage(int sage)
{
    age=sage;
}
 
int rab::getyears()
{
    return years;
}
 
void rab::setyears(int syears)
{
    years=syears;
}
 
int rab::getsal()
{
    return salary;
}
 
void rab::setsal(int ssal)
{
    salary=ssal;
}

все те же ошибки

Добавлено через 2 минуты
лол я узнал...надо было не срр файл подключать а Н

Добавлено через 36 секунд
зы удалил endif-ы,ошибок нет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Delphin_KKC
UNIX-way
 Аватар для Delphin_KKC
710 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.03.2010, 22:08     подключение hpp и срр,что то не правильно сделал,классы #22
Для столь простых программ с одним подключённым классом те эндифы нужны как зайцу стопсигнал
Но лучше их сразу привыкать писать чем разбирать маты компилятора в программе в пару тысяч строк.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 22:09  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #23
Delphin_KKC, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 10:08     подключение hpp и срр,что то не правильно сделал,классы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.03.2010, 10:08     подключение hpp и срр,что то не правильно сделал,классы #24
Если я не ошибаюсь, директива #include <header> указывает препроцессору, что в это место нужно вставить содержимое файла header (предварительно удалив из него все комментарии). Если не использовать связку #ifndef-#define-#endif, то при повторном подключении заголовочного файла header произойдет повторное определение всех функций и объектов, что приведет к ошибке. А так при первом подключении определяется уникальный идентификатор, который заставляет впоследствии пропускать препроцессор все, что заключено в блоке #ifndef-#endif.
ЗЫ, если компилятор позволяет, то вместо директив #ifndef... можно в начале заголовочного файла прописать директиву #pragma once (которая будет выполнять ту же функцию)
Yandex
Объявления
09.03.2010, 10:08     подключение hpp и срр,что то не правильно сделал,классы
Ответ Создать тему
Опции темы

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