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

раздельная компиляция - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
15.01.2013, 19:42     раздельная компиляция #1
Вот есть три файла: заголовочный файл с классом (.h), файл с реализацией методов класса (.cpp), и функцию main. Как, корректно, выполнить эту программу чтобы не подключают в основную программу файл .cpp? IDE - Dev c++

сам класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//employ2.h
#ifndef EMPLOY2_H
#define EMPLOY2_H
 
class Employee {
public:
       Employee(const char *, const char *);
       ~Employee();
       const char *getFirstName() const;
       const char *getLastName() const;
       
       /*virtual float earnings() const=0;
       virtual void print() const =0;*/
       
       void Show();
 
private:
        char *firstName;
        char *lastName;
        
};
 
#endif
методы класса
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
31
32
33
34
35
36
37
38
39
//employ2.cpp
#include <iostream.h>
#include <string.h>
#include <assert.h>
#include "employ2.h"
 
Employee::Employee(const char *first, const char *last)
{
     firstName=new char[strlen(first)+1];
     assert(firstName!=0);
     
     strcpy(firstName, first);
     
     lastName=new char[strlen(last)+1];
     assert(lastName!=0);
     
     strcpy(lastName, last);
}
 
Employee::~Employee()
{
          delete [] firstName;
          delete [] lastName;
}
 
const char *Employee::getFirstName() const
{
      return firstName;
}
 
const char *Employee::getLastName() const
{
      return lastName;
}
 
void Employee::Show()
{
     cout<<firstName<<endl<<lastName;
 }
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include "employ2.h"
//#include "employ.cpp"
 
int main()
{
    Employee A("a","a");
    A.Show();
    
    system("pause>0");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
15.01.2013, 19:50     раздельная компиляция #2
Хм, да всё вроде должно работать, если я что-то не пропустил. Какую ошибку выдает?
p.s Не надо инклюдить cpp-файлы, совсем.
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
15.01.2013, 19:58  [ТС]     раздельная компиляция #3
В том-то и дело, что не работает!
[Linker error] undefined reference to `Employee::Employee(char const*, char const*)'
[Linker error] undefined reference to `Employee::Show()'
[Linker error] undefined reference to `Employee::~Employee()'
[Linker error] undefined reference to `Employee::~Employee()'
32:2 C:\Users\A4F7~1\AppData\Local\Temp\ccuObaaa.o(.text+0x177) ld returned 1 exit status
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
15.01.2013, 20:29     раздельная компиляция #4
tokar2, employ2.h точно находится в папке с проектом?.. Если да, то я не знаю тогда D:
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
15.01.2013, 20:34  [ТС]     раздельная компиляция #5
Точно! И почему-то не работает! Работает только когда подключаю .cpp файл!
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
15.01.2013, 20:44     раздельная компиляция #6
у вас файл employ2.cpp должен быть подключен к проекту, в настройках проекта поищите. Если через командную строку компилировать, все нормально)
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
15.01.2013, 20:44     раздельная компиляция #7
так а ты в проект все эти файлы добавил?
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
15.01.2013, 21:09  [ТС]     раздельная компиляция #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
так а ты в проект все эти файлы добавил?
Под этим, вы что имеете в виду?)

Добавлено через 1 минуту
Как этот файл в проект добавить?
FreeMinder
 Аватар для FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
15.01.2013, 21:17     раздельная компиляция #9
MS Visual Studio 2012 все отлично компилится
employ2.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string.h>
#include <assert.h>
using namespace std;
 
class Employee
{
public:
       Employee(const char *, const char *);
       ~Employee();
       const char *getFirstName() const;
       const char *getLastName() const;
       
       /*virtual float earnings() const=0;
       virtual void print() const =0;*/
       
       void Show();
 
private:
        char *firstName;
        char *lastName;        
};


employ2.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
31
32
33
34
35
#include"employ2.h"
 
Employee::Employee(const char *first, const char *last)
{
     firstName=new char[strlen(first)+1];
     assert(firstName!=0);
     
     strcpy(firstName, first);
     
     lastName=new char[strlen(last)+1];
     assert(lastName!=0);
     
     strcpy(lastName, last);
}
 
Employee::~Employee()
{
          delete [] firstName;
          delete [] lastName;
}
 
const char *Employee::getFirstName() const
{
      return firstName;
}
 
const char *Employee::getLastName() const
{
      return lastName;
}
 
void Employee::Show()
{
     cout<<firstName<<endl<<lastName;
}


main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
#include "employ2.h"
 
int main()
{
    Employee A("a","a");
    A.Show();
    
    system("pause>0");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 21:35     раздельная компиляция
Еще ссылки по теме:

C++ Раздельная компиляция
Создание классов в С++. Раздельная компиляция C++
Раздельная компиляция C++
Раздельная компиляция ( Code blocks) C++
C++ Раздельная компиляция и шаблоны: как правильно использовать?

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
15.01.2013, 21:35     раздельная компиляция #10
http://brunoprog64.blogsome.com/images/devc.png
Видишь слева список? В нём должны быть твои срр и н файлы соответственно
Миниатюры
раздельная компиляция  
Yandex
Объявления
15.01.2013, 21:35     раздельная компиляция
Ответ Создать тему
Опции темы

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