Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,543
1

Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?

10.05.2011, 16:40. Просмотров 758. Ответов 1
Метки нет (Все метки)

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
//Щас всё объясню. Так, имеем два класса, в одном я определил функцию-член. Все конструкторы и прочее 
//опущены для уменьшения кода
 
 
#include <iostream>
#include <windows.h>
using namespace std;
 
//Вот первый класс и в нём объявлена функция Get_kol_vo_kvartalovl
class gorod{
 public:
  void Get_kol_vo_kvartalovl(){}; 
};
 
 
//Вот второй класс и в нём объявлена функция f
class kvartal{
 public:
  void f(const gorod src); 
};
 
 
//Так, а теперь просто-напросто определим функцию f
//И главное- в ней будет присутствовать вызов gorod::Get_kol_vo_kvartalovl
void kvartal::f(const gorod &src) {
 //Вот этот вызов. Нтчего не получается, не компилируется
 src.Get_kol_vo_kvartalovl();
};
 
 
int main(){
    return 0;
}
C++
1
2
3
4
5
6
7
8
//Теперь внимание- если объявить объект типа gorod (см. ниже) и скопировать src в gorod, то функция 
//вызывается. Почему нельзя обойтись одной лишь ссылкой на объект без создания 
//ДОПОЛНИТЕЛЬНОГО объекта?
void kvartal::f(const gorod &src) {
 //То есть объявляем g, копируем src в g и всё OK
 gorod g (src);
 g.Get_kol_vo_kvartalovl();
};
А ошибку пишет такую:
passing `const gorod' as `this' argument of `void gorod::Get_kol_vo_kvartalovl()' discards qualifiers
Я перевёл коряво, но всё равно ничё не понял

...Код мой, но подобный код я увидел в одной очень хорошей, на мой взгляд книге и он тоже не компилился с той ж не ошибкой. В чём дело, друзья?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 16:40
Ответы с готовыми решениями:

Функция-друг одно класса, член другого.
Привет. Не поможете как сделать чтобы функция одного класса была функцией-другом другого класса? ...

Массив объектов класса как член другого класса
Здравствуйте. У меня тут возникла проблемка #include &quot;main.h&quot; class player { public: ...

Почему вызывается перегрузка виртуальной функции из приватной секции дочернего класса?
Как вообще такое происходит class A { public: virtual void foo(){std::cout&lt;&lt;&quot;A\n&quot;; } };...

Как переместить из стека одного класса в массив другого класса?
// HW_on.24.11_classStack_SantaClaus.cpp: определяет точку входа для консольного приложения. //...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив...

1
Kastaneda
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
10.05.2011, 16:46 2
Цитата Сообщение от kravam Посмотреть сообщение
C++
1
void f(const gorod &src);
Для константных объектов могут быть вызванны только константные ф-ции, попробуй так:

C++
1
void Get_kol_vo_kvartalovl()const;
ну либо
C++
1
void f(gorod &src);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 16:46

Передача конструктору одного класса объект другого класса
Здравствуйте, кодеры. Столкнулся с проблемой. У меня есть 2 класса Camera и Game и...

Объявление объекта одного класса в описании другого класса
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой...

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


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

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

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