Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Artishok
ЧакЭ одобряЭ
279 / 278 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
#1

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

10.09.2011, 14:51. Просмотров 2274. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Member function may not be redeclared outside its class" (C++):

Ошибка компиляции "forbids in-class initialization of non-const static member" - C++
Доброго времени суток! Прошу помощи, так как сам понять в чем проблема не могу. Имею вот такой код: #include &quot;iostream&quot; ...

Ошибки: "invalid use of non-static data member", "error: from this location" - C++
Здравствуйте. Помогите пожалуйста понять в чём я не прав. Почему компилятор не даёт объявить указатель на структуру и почему я не могу...

При компиляции ошибка: C2228: left of ".real",".imag" must have struct/class/union - C++
Помогите, пожалуйста! Компилирую в VS2010... Ошибка: C2228: left of &quot;.real&quot;,&quot;.imag&quot; must have struct/class/union... Почему возникает эта...

Исправить ошибку C2079 "MiniPlayer::music" использует неопределенный class "MiniMusic" - C++
Приветствую. Ситуация следующая - есть 2 класса, оба используют друг друга. При компиляции вылезает ошибка: C2079 &quot;MiniPlayer::music&quot;...

namespace "std" has no member "vector" - C++
Собственно такая проблема, мне нужно использовать в программе std::vector, однако VC ругается, мол нет ни каких векторов в std. Люди...

Ошибка: namespace "geoo" has no member "ch" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace::std; namespace geoo { double PI = 3.14; double circumf(double...

1
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
10.09.2011, 16:21 #2
Artishok, скорее всего, основная проблема в том, что в файле Tkadr.h в описании класса Kadr вы забыли точку с запятой в конце. И ещё вы нигде не определили функцию SetTseh, а в main она используется. Плюс к тому, в описании класса вы определяете деструктор, а потом в Tkadr.cpp его переопределяете второй раз.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 16:21
Привет! Вот еще темы с ответами:

Error C2440: <function-style-cast>: невозможно преобразовать "unsigned int" в "std::bitset<_Bits>" - C++
С++ Не работает программа! Задание было такое: напишите программу invert(p,x,n), возвращающую значение х с инвертированными n-битами,...

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" - C++
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include &lt;iostream&gt; ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Синтаксическая ошибка: отсутствие ";" перед "<class-head>" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) class Densum { public: ...


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

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

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