0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
1

ООР множественное определение конструктора

29.01.2012, 14:11. Показов 1121. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени, народ! Учился по книге Дейтела, и наткнулся на такой пример. Перепечатал, два раза проверил, ещё раз перепечатал. Прочитал ошибку, перевел, получалось что произошло множественное определение конструктора, ну или как то так. Вот примеры, кто сталкивался? помогите пожалуйста, с меня плюсозавр в репутационный период полезно ответившего.

create.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//CREATE.H
#ifndef CREATE_H_INCLUDED
#define CREATE_H_INCLUDED
 
class CreateAndDestroy {
public:
   CreateAndDestroy(int); // конструктор
    ~CreateAndDestroy(); // деструктор
 
private:
    int data;
 
};
#endif // CREATE_H_INCLUDED
create.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// CREATE.CPP
 
// Определения функций-элементов для класса CreateAndDestroy
 
#include <iostream>
#include "create.h"
 
using namespace std;
 
 CreateAndDestroy::CreateAndDestroy(int value)
{
    data = value;
    cout << "Объект " << data << " конструктор";
}
 
 CreateAndDestroy::~CreateAndDestroy()
{ cout << "Объект " << data << " деструктор " << endl; }
main.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
36
#include <iostream>
#include "create.cpp"
 
using namespace std;
 
void create(void);
CreateAndDestroy first(1);
 
int main()
{
    cout << "   (глобальный созданный до main)" << endl;
 
    CreateAndDestroy second(2);
    cout << "   (локальный автоматический в main)" << endl;
 
    static CreateAndDestroy thrid(3);
    cout << "   (локальный статический в main)" << endl;
    create();
 
    CreateAndDestroy fourth(4);
    cout << "   (локальный автоматический в main)" << endl;
 
    return 0;
}
 
 void create(void)
{
    CreateAndDestroy fifth(5);
    cout << "   (локальный автоматический в create)" << endl;
 
    static CreateAndDestroy sixth(6);
    cout << "   (локальный статический в create)" << endl;
 
    CreateAndDestroy seventh(7);
    cout << "   (локальный автоматический в create)" << endl;
}
вот ошибка


obj/Debug/main.o||In function `CreateAndDestroy':|
/home/skywalker/Net/Dest/create.cpp|10|multiple definition of `CreateAndDestroy::CreateAndDestroy(int)'|
obj/Debug/create.o:/home/skywalker/Net/Dest/create.cpp|10|first defined here|
obj/Debug/main.o||In function `CreateAndDestroy':|
/home/skywalker/Net/Dest/create.cpp|10|multiple definition of `CreateAndDestroy::CreateAndDestroy(int)'|
obj/Debug/create.o:/home/skywalker/Net/Dest/create.cpp|10|first defined here|
obj/Debug/main.o||In function `~CreateAndDestroy':|
/home/skywalker/Net/Dest/create.cpp|16|multiple definition of `CreateAndDestroy::~CreateAndDestroy()'|
obj/Debug/create.o:/home/skywalker/Net/Dest/create.cpp|16|first defined here|
obj/Debug/main.o||In function `~CreateAndDestroy':|
/home/skywalker/Net/Dest/create.cpp|16|multiple definition of `CreateAndDestroy::~CreateAndDestroy()'|
obj/Debug/create.o:/home/skywalker/Net/Dest/create.cpp|16|first defined here|
||=== Build finished: 8 errors, 0 warnings ===|
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2012, 14:11
Ответы с готовыми решениями:

Множественное определение переменной
Доброго времени суток. Просидев n-ое кол-во часов, доделал считай проект и тут вылезли ошибки о...

ошибка: множественное определение статического члена класса
народ помогите разобраться с проблемой вот код #ifndef BANKACCOUNT_H #define BANKACCOUNT_H...

Явное определение конструктора копирования и оператора присваивания
Объясните, пожалуйста, нужно ли явно определять конструктор копирования (**) и оператор...

Определение конструктора копирования для производного класса
Как написать определение конструктора копирования для производного класса, а именно копировании...

3
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
29.01.2012, 14:47 2
в main.cpp замените #include "create.cpp" на #include "create.h"
2
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
29.01.2012, 14:58  [ТС] 3
Большое спасибо, грубейшая ошибка со стороны редакторов.
0
12 / 12 / 0
Регистрация: 31.10.2011
Сообщений: 35
29.01.2012, 21:18 4
На самом деле, все будет компилироваться, если компилировать командой

Bash
1
g++ main.cpp -o prog
Хотя, конечно, включать вот так в один модуль текст другого - полнейшее безобразие.
1
29.01.2012, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2012, 21:18
Помогаю со студенческими работами здесь

Определение конструктора класса посредством другого конструктора - ": this(.)"
В классе несколько конструкторов, отличающихся числом параметров. И один из конструкторов (с одним...

Множественное определение
Keil uVision5 ругается на множественное определение функций в файлах tm_stm32f4_usb_vcp.o и main.o....

QtCreator ругается на множественное определение переменной
Всем доброго времени суток. С Qt знаком мало, но фреймворк легок в освоении и пока получается....

Определение полей вне конструктора
Когда я пишу класс class A { private int i = 5; } почему он не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru