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

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

Войти
Регистрация
Восстановить пароль
 
alex.gorbach
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 35
#1

Объявить конструкторы - C++

08.09.2012, 11:33. Просмотров 416. Ответов 2
Метки нет (Все метки)

Доброго дня. Написал класс с полями и методами. Сделал тестовую программку - все работает. Добавил в класс несколько конструкторов (в .h прототипы, в .сpp реализацию) - не компилируется, на каждую реализацию конструктора дает ошибку, мол, не является членом класса. Вот листинг (C++ Builder):
OwnThing.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class OwnThing
{
        char    title[20];
        char    type[20];
        int     age;
        float   weight;
public:
                OwnThing();
                OwnThing(char*, char*, int, float);
                OwnThing(OwnThing&);
               ~OwnThing();
        void    SetTitle(char*);
        char*   GetTitle();
        void    SetType(char*);
        char*   GetType();
        void    SetAge(int);
        int     GetAge();
        void    SetWeight(float);
        float   GetWeight();
        void    Output();
        void    Input();
};
OwnThing.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <string.h>
#include <stdio.h>
#include "OwnThing.h"
 
//------------------ìåòîäû-ГЄГ®Г*ñòðóêòîðû-----------
 
OwnThing::OwnThing()
{                    //здесь ошибка 'OwnThing::OwnThing()' is not a member of 'OwnThing', 
                     //как и в остальных конструкторах
        strcpy(this->title, "");
        strcpy(this->type, "");
        this->age = 0;
        this->weight = 0;
}
 
OwnThing::OwnThing(char* title, char* type, int age, float weight)
{
        strcpy(this->title, title);
        strcpy(this->type, type);
        this->age = age;
        this->weight = weight;
}
 
OwnThing::OwnThing(OwnThing& source)
{
        strcpy(this->title, source->title);
        strcpy(this->type, source->type);
        this->age = source->age;
        this->weight = source->weight;
}
 
OwnThing::~OwnThing()
{
 
}
 
//------------------ìåòîäû-ãåòòåðû----------------
 
char* OwnThing::GetTitle()
{
        return this->title;
}
 
char* OwnThing::GetType()
{
        return this->type;
}
 
int OwnThing::GetAge()
{
        return this->age;
}
 
float OwnThing::GetWeight()
{
        return this->weight;
}
 
//------------------ìåòîäû-ñåòòåðû----------------
 
void OwnThing::SetTitle(char* title)
{
     strcpy(this->title, title);
}
 
void OwnThing::SetType(char* type)
{
     strcpy(this->type, type);
}
 
void OwnThing::SetAge(int age)
{
        this->age = age;
}
 
void OwnThing::SetWeight(float weight)
{
        this->weight = weight;
}
 
//----------------ìåòîäû ââîäГ*-âûâîäГ*-------------
 
void OwnThing::Output()
{
        printf("\nTitle  : %s", this->title);
        printf("\nType   : %s", this->type);
        printf("\nAge    : %d", this->age);
        printf("\nWeight : %5.2f\n",this->weight);
}
 
void OwnThing::Input()
{
        printf("\n\nEnter the title  : ");
        scanf("%s", this->title);
        printf("\nEnter the type   : ");
        scanf("%s", this->type);
        printf("\nEnter the age    : ");
        scanf("%d", &this->age);
        printf("\nEnter the weight : ");
        scanf("%f", &this->weight);
}
mainProgram.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "OwnThing.h"
 
#pragma hdrstop
#pragma argsused
 
int main(int argc, char* argv[])
{
        OwnThing obj;
        obj.Input();
        obj.Output();
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 11:33     Объявить конструкторы
Посмотрите здесь:

Классы, конструкторы - C++
В понедельник последний день сдачи лабы. На выбор сделать одну из них: №1 Делать через классы и конструкторы. С использованием...

Конструкторы по умолчанию. - C++
Здравствуйте, возник вопрос. Только что минут 10 въезжал что у меня не так. Суть вот в чем. Есть некий класс, в моем случае например digit....

Конструкторы в классах - C++
Здравствуйте уважаемые форумчане! Прошу Вас помочь мне уяснить работу конструкторов в классах! А точнее что нужно сделать что бы...

Конструкторы и деструктор - C++
Здравствуйте. Мне нужно написать маленькую и простую программу, имеющую конструкторы: инициализирующий, по умолчанию, копирующий и...

Наследование, конструкторы - C++
Что не верно в таком объявлении : class P{ public: P(int n); }; class Ch:public P{ public: Ch(int n):P(n); };

наследование. конструкторы - C++
#include &lt;iostream&gt; using namespace std; #include &lt;locale&gt; #include &lt;time.h&gt; #include &lt;windows.h&gt; class TArray { ...

Не работают конструкторы.... - C++
Помогите, кому не трудно... Не работают конструкторы наследования (заккоментил подсказки на них...): #include &lt;iostream.h&gt; ...

Указатели и конструкторы - C++
Всем доброго времени суток!!! Выполняя упражнение Лафоре 10 главы №1 написав и проверив всё столкнулся с такой проблемой. Проще...

Конструкторы и классы - C++
Возникает ошибка что нет конструктора, хотя он есть. error C2514: 'B' : class has no constructors class B; class A { B* b;...

Конструкторы класса в С++ - C++
В классе я объявил два конструктора: Node( int Depth = 0, string FunctionName = &quot;NULL&quot;, double TimerTime = 0.0 ) : id( Depth,...

ооп. конструкторы. - C++
Добрый вечер! Не могу понять как из конструктора одного класса вызвать конструктор другого класса. например есть класс точка со своим...

Конструкторы/декструкторы - C++
Можете объяснить что это такое и с чем их едят?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.09.2012, 12:32     Объявить конструкторы #2
В конструкторе OwnThing::OwnThing(OwnThing& source) исправьте:
C++
1
2
3
4
5
6
7
OwnThing::OwnThing(OwnThing& source)
{
    strncpy(this->title, source.title, 19);
    strncpy(this->type, source.type, 19);
    this->age = source.age;
    this->weight = source.weight;
}
:

Добавлено через 3 минуты
C++
1
OwnThing(const char*, const char*, int, float);
Добавлено через 2 минуты
Всюду, где char*, заменить на const char*

Добавлено через 1 минуту
В файл OwnThing.h добавить
C++
1
2
3
4
#ifndef OWNTHING_H_
#define OWNTHING_H_
...
#endif
alex.gorbach
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 35
08.09.2012, 12:36  [ТС]     Объявить конструкторы #3
yuron_477, спасибо, советы полезные, но не исправляющие мою проблему. Опытным путнем удалось ее устранить:
вместо
C++
1
#include "OwnThing.h"
написал
C++
1
#include <OwnThing.h>
Таким образом нормально инклудится и работает.
Ответ Создать тему
Опции темы

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