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

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

Восстановить пароль Регистрация
 
alex.gorbach
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 35
08.09.2012, 11:33     Объявить конструкторы #1
Доброго дня. Написал класс с полями и методами. Сделал тестовую программку - все работает. Добавил в класс несколько конструкторов (в .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++
конструкторы C++
C++ конструкторы
C++ конструкторы
Конструкторы C++
C++ Конструкторы
C++ Объявить массив? Запросто! Объявить массив массивов? А как это?
C++ Конструкторы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 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>
Таким образом нормально инклудится и работает.
Yandex
Объявления
08.09.2012, 12:36     Объявить конструкторы
Ответ Создать тему
Опции темы

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