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

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

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

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

06.12.2013, 13:23. Просмотров 476. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 13:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов функции класса. Чего-то не допонял (C++):

Вызов функции из класса - C++
есть функция объявленная в классе Calendar void calendar::menu_k() { cout&lt;&lt;&quot;\n\n&quot;; set_color(cGREEN); cout&lt;&lt;&quot;МЕНЮ&quot;&lt;&lt;endl; ...

Вызов функции в шаблоне класса - C++
Выполняю,через шаблоны класса. Вообщем,в меню не могу вызвать функции. Скажите,все ли правильно в вызове функций? вот файл .h ...

Вызов функции по указателю из класса - C++
Такой расклад. Допустим имеем код: #include &lt;iostream&gt; using namespace std; template &lt;class _Tp&gt; class my_mem_fun_t { ...

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

Вызов функции класса по каллбеку - C++
Хочу реализовать возможность вызова метода класса по каллбеку. Сделал такой класс: class ICallable { public: ICallable ();...

Вызов функции вне класса - C++
Есть класс, в нем два метода. В одном из них надо вызвать функцию, которая расположена вне класса. Как зделать?? Можете на примере...

4
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 13:26 #2
нужно создать экземпляр класса и вызывать его методы.
В коде же экземпляр не создается, и методы вызываются статически.(хотя таковыми не являеются)
1
ValeryS
Модератор
6682 / 5091 / 477
Регистрация: 14.02.2011
Сообщений: 17,092
06.12.2013, 13:27 #3
Цитата Сообщение от StriBog45 Посмотреть сообщение
Man::ChangeName();
Man::ChangeAge();
и для какого объекта ты вызываешь?
0
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 13:27 #4
поиск в гугле по ключу c++ this выдал эту ссылку Указатель this - как и когда его использовать
почитайте мб полезная инфа
1
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;
}
0
07.12.2013, 10:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2013, 10:41
Привет! Вот еще темы с ответами:

Вызов функции родительского класса в наследнике - C++
Подскажите, пожалуйста, можно ли вызвать функцию родительского класса если в наследнике уже есть функция с таким же именем? Если да, то как...

Вызов глобальной функции из объекта класса - C++
Здравствуйте! Допустим, к примеру, имеется класс, который может хранить в себе адрес на функцию, а также метод который &quot;запустит&quot; эту...

Вызов неконстантной функции класса в mem_fun_ref - C++
Привет. мне нужно вызвать функцию класса в mem_fun_ref, но ей, как известно требуется чтобы передаваемая функция класса была...

Вызов функции из основного класса в наследуемом - C++
Есть класс. По нему создан наследственный класс. Как использовать функцию из основного класса в наследственном?


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

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

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