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

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

Войти
Регистрация
Восстановить пароль
 
StriBog45
6 / 6 / 2
Регистрация: 03.09.2013
Сообщений: 81
#1

Вызов функции класса. Чего-то не допонял - C++

06.12.2013, 13:23. Просмотров 419. Ответов 4
Метки нет (Все метки)

1>d:\с++ файл\1.5.1\1.5.1\1.5.1.cpp(136): error C2352: Man::ChangeName: недопустимый вызов нестатической функции-члена
1> d:\с++ файл\1.5.1\1.5.1\1.5.1.cpp(16): см. объявление "Man::ChangeName"
1>d:\с++ файл\1.5.1\1.5.1\1.5.1.cpp(137): error C2352: Man::ChangeAge: недопустимый вызов нестатической функции-члена
1> d:\с++ файл\1.5.1\1.5.1\1.5.1.cpp(17): см. объявление "Man::ChangeAge"
и.т.д.

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
class Man
{
public:
    Man(){};
    ~Man(){};
    char ChangeName();
    int ChangeAge();
    int ChangeSex();
    float ChangeWeight();
    char PrintName();
    int PrintAge();
    int PrintSex();
    float PrintWeight();
protected:
    char name;
    int age;
    int sex;
    float weight;
};
 
class Student: public Man
{
public:
    Student(){};
    ~Student(){};
    int ChangeYear();
    int PrintYear();
protected:
    int year;
};
 
char Man::ChangeName()
{
    cout << "Введите имя: ";
    cin >> name;
    cout << endl;
}
int Man::ChangeAge()
{
    cout << "Введите возраст: ";
    cin >> age;
    cout << endl;
}
int Man::ChangeSex()
{
    cout << "Введите номер пола для его выбора: "
         << endl
         << "1) Мужской"
         << endl
         << "2) Женский"
         << endl
         << "3) Отказ ввода пола"
         << endl;
    for(;;)
    {
        cin >> sex;
        if ( sex > 0 && sex < 4)
        {
            break;
        }
        else
        {
            cout << "Вы вне зоны допустимых значений"
                 << endl;
        }
    }
}
float Man::ChangeWeight()
{
    cout << "Введите вес: ";
    cin >> weight;
    cout << endl;
}
int Student::ChangeYear()
{
    cout << "Введите год обучения: ";
    cin >> year;
    cout << endl;
}
char Man::PrintName()
{
    cout << "Имя: "
         << name
         << endl;
}
int Man::PrintAge()
{
    cout << "Возраст: "
         << age
         << endl;
}
int Man::PrintSex()
{
    cout << "Возраст: ";
    if ( sex == 1 )
    {
        cout << "Мужской";
    }
    if ( sex == 2 )
    {
        cout << "Женский";
    }
    if ( sex == 3 )
    {
        cout << "Отказ от выбора";
    }
    cout << endl;
}
float Man::PrintWeight()
{
    cout << "Вес: "
         << weight
         << endl;
}
int Student::PrintYear()
{
    cout << "Год обучения: "
         << year
         << endl;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    int x;
    Man::ChangeName();
    Man::ChangeAge();
    Man::ChangeSex();
    Man::ChangeWeight();
    Student::ChangeYear();
    Man::PrintName();
    Man::PrintAge();
    Man::PrintSex();
    Man::PrintWeight();
    Student::PrintYear();
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 13:23     Вызов функции класса. Чего-то не допонял
Посмотрите здесь:

Вызов функции из класса C++
C++ вызов неконстантной функции класса в mem_fun_ref
C++ Вызов функции родительского класса в наследнике
Вызов функции класса по каллбеку C++
Вызов функции в шаблоне класса C++
C++ Вызов функции по указателю из класса
Вызов глобальной функции из объекта класса C++
C++ Не работает вызов виртуальной функции из класса потомка
C++ Вызов функции с не заданными параметрами из объекта класса
Вызов функции вне класса C++
вызов статичной функции класса C++
C++ Вызов функции из основного класса в наследуемом

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 13:26     Вызов функции класса. Чего-то не допонял #2
нужно создать экземпляр класса и вызывать его методы.
В коде же экземпляр не создается, и методы вызываются статически.(хотя таковыми не являеются)
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,469
06.12.2013, 13:27     Вызов функции класса. Чего-то не допонял #3
Цитата Сообщение от StriBog45 Посмотреть сообщение
Man::ChangeName();
Man::ChangeAge();
и для какого объекта ты вызываешь?
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 13:27     Вызов функции класса. Чего-то не допонял #4
поиск в гугле по ключу c++ this выдал эту ссылку Указатель this - как и когда его использовать
почитайте мб полезная инфа
StriBog45
6 / 6 / 2
Регистрация: 03.09.2013
Сообщений: 81
07.12.2013, 10:41  [ТС]     Вызов функции класса. Чего-то не допонял #5
Цитата Сообщение от МаксимТ Посмотреть сообщение
поиск в гугле по ключу c++ this выдал эту ссылку Указатель this - как и когда его использовать
почитайте мб полезная инфа
В итоге получилось вот так:
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
class Man
{
public:
    Man(){};
    ~Man(){};
    char ChangeName();
    int ChangeAge();
    int ChangeSex();
    float ChangeWeight();
    char PrintName();
    int PrintAge();
    int PrintSex();
    float PrintWeight();
protected:
    char name[30];
    int age;
    int sex;
    float weight;
};
 
class Student: public Man
{
public:
    Student(){};
    ~Student(){};
    int ChangeYear();
    int PrintYear();
protected:
    int year;
};
 
char Man::ChangeName()
{
    cout << "Введите имя: ";
    cin >> name;
    cout << endl;
    return 0;
}
int Man::ChangeAge()
{
    cout << "Введите возраст: ";
    cin >> age;
    cout << endl;
    return age;
}
int Man::ChangeSex()
{
    cout << "Введите номер пола для его выбора: "
         << endl
         << "1) Мужской"
         << endl
         << "2) Женский"
         << endl
         << "3) Отказ ввода пола"
         << endl;
    for(;;)
    {
        cin >> sex;
        if ( sex > 0 && sex < 4)
        {
            break;
        }
        else
        {
            cout << "Вы вне зоны допустимых значений"
                 << endl;
        }
    }
    return sex;
}
float Man::ChangeWeight()
{
    cout << "Введите вес: ";
    cin >> weight;
    cout << endl;
    return weight;
}
int Student::ChangeYear()
{
    cout << "Введите год обучения: ";
    cin >> year;
    cout << endl;
    return year;
}
char Man::PrintName()
{
    cout << "Имя: "
         << name
         << endl;
    return 0;
}
int Man::PrintAge()
{
    cout << "Возраст: "
         << age
         << endl;
    return age;
}
int Man::PrintSex()
{
    cout << "Возраст: ";
    if ( sex == 1 )
    {
        cout << "Мужской";
    }
    if ( sex == 2 )
    {
        cout << "Женский";
    }
    if ( sex == 3 )
    {
        cout << "Отказ от выбора";
    }
    cout << endl;
    return sex;
}
float Man::PrintWeight()
{
    cout << "Вес: "
         << weight
         << endl;
    return weight;
}
int Student::PrintYear()
{
    cout << "Год обучения: "
         << year
         << endl;
    return year;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    Man x;
    Student y;
    x.ChangeName();
    x.ChangeAge();
    x.ChangeSex();
    x.ChangeWeight();
    y.ChangeYear();
    x.PrintName();
    x.PrintAge();
    x.PrintSex();
    x.PrintWeight();
    y.PrintYear();
    system("PAUSE");
    return 0;
}
Yandex
Объявления
07.12.2013, 10:41     Вызов функции класса. Чего-то не допонял
Ответ Создать тему
Опции темы

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