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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
#1

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

07.03.2010, 15:04. Просмотров 2451. Ответов 23
Метки нет (Все метки)

сначала создаю 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 и срр,что то не правильно сделал,классы
Посмотрите здесь:
Подключение в проекте .hpp и .cpp файлов C++
C++ срр файл в нутри срр
Правильно ли я сделал? C++
C++ Правильно ли сделал
Правильно ли я сделал пример 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
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
07.03.2010, 15:48  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #3
SerЁga, что за реализация и как добавить
Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 16:02     подключение hpp и срр,что то не правильно сделал,классы #4
А у тебя в файле emloye.cpp где директива #include "emloye.hpp" ?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 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
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
07.03.2010, 20:26     подключение hpp и срр,что то не правильно сделал,классы #7
есть еще вариант: в .hpp написать после объявления заголовочных файлов
#ifndef __employee
#define __employee
и в самом конце файла - #endif
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
07.03.2010, 20:56  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #8
Цитата Сообщение от Vorona Посмотреть сообщение
#ifndef __employee
#define __employee
в книгах такое нету
Цитата Сообщение от SerЁga Посмотреть сообщение
Эти ф-ции ничего делать не будут, но ошибки должны уйти.
А потом в ф-циях напишишь то что надо.
почему?...эти функции возвращают числа
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
07.03.2010, 22:44     подключение hpp и срр,что то не правильно сделал,классы #9
Цитата Сообщение от МедведЪ Посмотреть сообщение
Сообщение от Vorona Посмотреть сообщение
#ifndef __employee
#define __employee
в книгах такое нету
в книгах много чего нету, но эти директивы должны быть и такой способ посоветовал преподователь, впринципе мне часто помогало.. и в конце #endif не забудь
можно еще указать полный путь нахождения .hpp файла только в таких <> скобках, а не ковычках или посмотреть настройки компилятора..
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
07.03.2010, 22:45  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #10
Цитата Сообщение от Vorona Посмотреть сообщение
в книгах много чего нету, но эти директивы должны быть и такой способ посоветовал преподователь, впринципе мне часто помогало.. и в конце #endif не забудь
можно еще указать полный путь нахождения .hpp файла только в таких <> скобках, а не ковычках или посмотреть настройки компилятора..
спасибо за инфу,но зы я по книге прохожу,все имет свое место
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
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
07.03.2010, 23:26     подключение hpp и срр,что то не правильно сделал,классы #12
хм, скомпилировал твой код (с исправлениями employee:: ), все работает)

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

вспомнил, а ты создал проект?
вот распределил все по трем файлам, не работало, а создал проект и подключил туда main.cpp employee.cpp, все работает
easybudda
Эксперт CЭксперт С++
9467 / 5480 / 927
Регистрация: 25.07.2009
Сообщений: 10,504
07.03.2010, 23:30     подключение hpp и срр,что то не правильно сделал,классы #13
Цитата Сообщение от МедведЪ Посмотреть сообщение
в книгах такое нету
Любой стандартный заголовочный файл открой. Лежат где-нибудь, вроде c:\Program Files\Microsoft Visual Studio 8\VC\include.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
07.03.2010, 23:36  [ТС]     подключение hpp и срр,что то не правильно сделал,классы #14
Цитата Сообщение от easybudda Посмотреть сообщение
Любой стандартный заголовочный файл открой. Лежат где-нибудь, вроде c:\Program Files\Microsoft Visual Studio 8\VC\include.
зачем Оо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2010, 00:07     подключение hpp и срр,что то не правильно сделал,классы
Еще ссылки по теме:
C++ Правильно ли я сделал?(Математические.Функции)
C++ Архитектура программы. Правильно ли сделал?
C++ Проверьте пожалуйста, правильно ли я сделал задание
C++ Правильно ли я всё сделал? CGI и Visual C++
C++ C++ | Правильно ли я сделал задание | Массивы | Указатели и Ссылки

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

Или воспользуйтесь поиском по форуму:
Delphin_KKC
UNIX-way
709 / 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 постоянно юзаю.
Yandex
Объявления
08.03.2010, 00:07     подключение hpp и срр,что то не правильно сделал,классы
Ответ Создать тему
Опции темы

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