Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390

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

07.03.2010, 15:04. Показов 4927. Ответов 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
а че за ошибки,и где компилятор не говорит,при нажатии на ошибку
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2010, 15:04
Ответы с готовыми решениями:

Что я не правильно сделал?
Есть задача: Есть три действительных числа, удвоить их если x&gt;=y&gt;=z и заменить их абсолютными величинами если это не так. { ...

Что-то не правильно сделал
Друзья! Разбирался с шаблоном форума, и столкнулся с проблемой... Картинка (Вообщем на картинке понятно) Нужно чтобы поле сообщений...

Прошу проверить. Не уверен, что сделал правильно
Доброе утро, форумчане! У меня такая вот проблема. С Mathcadом вообще не знаком, но нужно срочно сделать 14 задач до вечера. Так...

23
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 21:38  [ТС]
Студворк — интернет-сервис помощи студентам


Добавлено через 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-ы,ошибок нет
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
08.03.2010, 22:08
Для столь простых программ с одним подключённым классом те эндифы нужны как зайцу стопсигнал
Но лучше их сразу привыкать писать чем разбирать маты компилятора в программе в пару тысяч строк.
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 22:09  [ТС]
Delphin_KKC, спасибо
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
09.03.2010, 10:08
Если я не ошибаюсь, директива #include <header> указывает препроцессору, что в это место нужно вставить содержимое файла header (предварительно удалив из него все комментарии). Если не использовать связку #ifndef-#define-#endif, то при повторном подключении заголовочного файла header произойдет повторное определение всех функций и объектов, что приведет к ошибке. А так при первом подключении определяется уникальный идентификатор, который заставляет впоследствии пропускать препроцессор все, что заключено в блоке #ifndef-#endif.
ЗЫ, если компилятор позволяет, то вместо директив #ifndef... можно в начале заголовочного файла прописать директиву #pragma once (которая будет выполнять ту же функцию)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2010, 10:08

Сделал тестовое задание, ответили что я джун плюс, объясните что я сделал не так
Недавно попросили сделать вот это тестовое задание...

Вылетают файлы Python. Не понимаю что я сделал не правильно
Всем, здравствуйте! Не давно решил создать свой сайт. И Python File открывается и даже загружается не много, но вылетает. ( Я постарался...

Подскажите пожалуйста, что не так сделал и как нужно написать правильно
Идея такова : даны уравнения прямых а1х+b1y=c1, a2x+b2y=c2, a3x+b3y=c3. Выяснить, какие из этих прямых параллельны, а какие - нет.Само по...

масив. я сделал прогу но она не работает.у меня подозрение что я не правильно собрал процедуры
программа должна сумировать все отрицательные числа и находить среднее арифметическое, компилятор ошибок не выдает, но прога работать не...

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


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru