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

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

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

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

07.03.2010, 15:04. Просмотров 2462. Ответов 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 и срр,что то не правильно сделал,классы (C++):

Подключение в проекте .hpp и .cpp файлов - C++
Добрый день! Среда разработки Code Blocks 13.12 Компилятор GNU GCC В проекте существует 3 файла в проекте - main.cpp, SW229.cpp и...

срр файл в нутри срр - C++
можна ли зделать так что бы срр файл выполнялса в нутри главно файла програмы (срр) при нажатии кнопки если да то как ?

Правильно ли я сделал? - C++
#include &lt;iostream&gt; using namespace std; int main() { int a,b,c; cin&gt;&gt;a&gt;&gt;b&gt;&gt;c; if ((a+b&gt;c) || (a+c&gt;b) ||...

Правильно ли сделал - C++
Нужно проверить правильно ли я сделал?? #include &lt;iostream.h&gt; #include &lt;math.h&gt; void main() { double k,a,n,m,p; cout...

правильно ли я сделал задание? - C++
правильно ли сделано задание? //предположим, что указатель pa был определен в следующем выражении с использованием оператора new. ...

Правильно ли я сделал пример - C++
http://www.cyberforum.ru/cpp-beginners/thread648042.html#post3434602 Правильно*?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
08.03.2010, 00:12  [ТС] #16
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
На что компилятор возмутится.
Один раз я так попал. С тех пор ifndef постоянно юзаю.
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,601
08.03.2010, 00:48 #17
Цитата Сообщение от МедведЪ Посмотреть сообщение
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
Читай правильные книги!
КиР 4.11.3. Условная компиляция.
Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 02:52 #18
Цитата Сообщение от МедведЪ Посмотреть сообщение
не,ну я понимаю что это можно,но почему в книге об этом не говорится,а?
Потому что книги это книги, часто бывает и такое, что читаешь пол книги, в главах описываються разные вопросы, приводятся в качестве примера код, а потом, грубо говоря под конец книги ты узнаешь, что все эти коды не компилируются потому что в них не используеться, казалосьбы такая ерунда, как стандартное простраство имент( тобеж std) и тебе прямым текстом пишут что все это сделали специально чтоб, как бы не нагружать читателя, или что либо подобное... так что просто как ты хотел, следовать книге, это можно сказать как минимум не разумно, в том смысле что если об этом не сказано в этой книге, то об этом сказано в другой книге, и зацикливаться на той книге которую ты сейчас читаешь, очень даже не стоит! ( если что не понятно здесь то поищи это там...). Я сам прошел через это, может кто со мной и не согласится но такое уж моё мнение, прислушатся к нему или нет, это дело сугубо личное.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
08.03.2010, 09:55  [ТС] #19
easybudda, ну спс...снова из за книг начинаю разочароваться в С++ и не любить....так же как и стало с явой...какая то тупая книга которая сразу начинается с классов...и тупая прога нетбинс,который не разрешает менять стд коды актив х-ов
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.03.2010, 11:42 #20
Цитата Сообщение от МедведЪ Посмотреть сообщение
...снова из за книг начинаю разочароваться в С++ и не любить...
Всегда говорил что самый лучший учитель - компилятор.
А книги - это что-то типа русского хелпа к нему
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
08.03.2010, 21:38  [ТС] #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
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.03.2010, 22:08 #22
Для столь простых программ с одним подключённым классом те эндифы нужны как зайцу стопсигнал
Но лучше их сразу привыкать писать чем разбирать маты компилятора в программе в пару тысяч строк.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
08.03.2010, 22:09  [ТС] #23
Delphin_KKC, спасибо
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
09.03.2010, 10:08 #24
Если я не ошибаюсь, директива #include <header> указывает препроцессору, что в это место нужно вставить содержимое файла header (предварительно удалив из него все комментарии). Если не использовать связку #ifndef-#define-#endif, то при повторном подключении заголовочного файла header произойдет повторное определение всех функций и объектов, что приведет к ошибке. А так при первом подключении определяется уникальный идентификатор, который заставляет впоследствии пропускать препроцессор все, что заключено в блоке #ifndef-#endif.
ЗЫ, если компилятор позволяет, то вместо директив #ifndef... можно в начале заголовочного файла прописать директиву #pragma once (которая будет выполнять ту же функцию)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 10:08
Привет! Вот еще темы с ответами:

Архитектура программы. Правильно ли сделал? - C++
Собствено с архитектурой вроде определился. Хотелось бы конструктивной критики. Задача по сути следующая: - Считывать данные...

Правильно ли я сделал?(Математические.Функции) - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; int main() { setlocale(0,&quot;&quot;); float pi,rez; ...

Правильно я сделал программу по уравнению? - C++
z=\sqrt{\left|y-2 \right|+3}+\frac{x+\frac{y}{2}}{2\left|1+y \right|}\left(x+1 \right) вот что у меня получилось ...

Правильно ли я всё сделал? CGI и Visual C++ - C++
Долго занимался RTFMом STFW. Врезультате получилось всё вот так: 1. Создал проект консольного приложения в Visual Studio. #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2010, 10:08
Ответ Создать тему
Опции темы

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