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

"Member function may not be redeclared outside its class" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
10.09.2011, 14:51     "Member function may not be redeclared outside its class" #1
подчеркивает красной линией конструктор копирования с таким сообщением в Tkadr.cpp
Tkadr.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
#include "TKadr.h"
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
 
void Kadr::init()
{
    name=new char[MAX_STRING_LEN];
    memset(name,0,MAX_STRING_LEN);
    tseh=0;
    razriad=0;
}
 
Kadr::Kadr()
{
   init();
   printf("Default constructor");
}
 
Kadr::Kadr(char *_name,int _tseh,int _razriad)
{
    init();
    SetName(_name);
    SetTseh(_tseh);
    SetRazriad(_razriad);
    printf("Constructor with params");
}
 
Kadr::Kadr(Kadr& _kadr)//конструктор копирования
{
    init();
    SetName(_kadr.GetName());
    SetTseh(_kadr.GetTseh());
    SetRazriad(_kadr.GetRazriad());
    printf("Copy constructor");
}
 
Kadr::~Kadr()
{
    delete[] name;
    name=NULL;
}
 
const char* Kadr::GetName()
{
    return name;
}
 
int Kadr::GetTseh()
{
    return tseh;
}
 
int Kadr::GetRazriad()
{
    return razriad;
}
 
void Kadr::SetName(char *_name)
{
    if (_name==NULL)
    {
       printf("Нет данных");
       return;
    }
    strcpy(name,_name);
}
 
void Kadr::SetRazriad(int _razriad)
{
    razriad=_razriad;
}
 
void Kadr::Show()
{
    std::cout<<name<<" "<<tseh<<" "<<razriad;
}
Tkadr.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
31
32
#ifndef TKADR_H
#define TKADR_H
 
#define MAX_STRING_LEN 100
#include <iostream>
 
 
 
class Kadr
{
    char *name;
    int  tseh;
    int  razriad;
 
private:
     void init();
 
public:
    Kadr();
    Kadr(char *_name,int _tseh ,int _razriad);
    Kadr(Kadr& _kadr);
    ~Kadr(){};
    void SetName(char *_name);
    void SetTseh(int _tseh);
    void SetRazriad(int _razriad);
    const char* GetName();
    int GetTseh();
    int GetRazriad();
    void Show();
}
 
#endif
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
37
38
39
40
41
42
43
44
45
#include <iostream>
using std::cin;
using std::cout;
 
#include "TKadr.h"
 
 
 
int main()
{
    Kadr a1;
    a1.SetName("obj1");
    a1.SetRazriad(1);
    a1.SetTseh(2);
 
    Kadr a2("obj2",3,2);
 
    Kadr *a3=new Kadr("obj3",3,2);
    Kadr a4(a1);
    a4.SetName("a4");
    //указатель на функцию
    void (Kadr::*showKadr)();
    showKadr=&Kadr::Show;
 
    (a4.*showKadr)();
 
 
    Kadr kadri[]={a1,a2,*a3,a4};
    for(int i=0;i<4;i++)
       kadri[i].Show();
    std::cout<<std::endl;
    Kadr** kadrovik=new Kadr*[4];
    kadrovik[0]=&a1;
    kadrovik[1]=&a2;
    kadrovik[2]=a3;
    kadrovik[3]=&a4;
    for(int i=0;i<4;i++)
       kadrovik[i]->Show();
 
    delete[] kadrovik;
    delete a3;
 
    getchar();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 14:51     "Member function may not be redeclared outside its class"
Посмотрите здесь:

overloaded member function not found C++
Шибка в member function без реализации C++
<method name> is not a member of <class> при любом типе возвращаемого значения, кроме int C++
C++ ошибка [BCC32 Error] windowp.cpp(201): E2235 Member function must be called or its address taken
class::function():? C++
C++ E2214 Cannot have a non-inline function in a local class
C++ Request for member '.' in '.', which is of non-class type
Widgets, ошибка: 'class Ui::MainWindow' has no member named <...> C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
10.09.2011, 16:21     "Member function may not be redeclared outside its class" #2
Artishok, скорее всего, основная проблема в том, что в файле Tkadr.h в описании класса Kadr вы забыли точку с запятой в конце. И ещё вы нигде не определили функцию SetTseh, а в main она используется. Плюс к тому, в описании класса вы определяете деструктор, а потом в Tkadr.cpp его переопределяете второй раз.
Yandex
Объявления
10.09.2011, 16:21     "Member function may not be redeclared outside its class"
Ответ Создать тему
Опции темы

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