Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
1

Указатель на объект в качестве параметра вызываемого метода класса

08.04.2017, 02:33. Показов 1184. Ответов 6
Метки нет (Все метки)

Код по сути
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Interface.cpp
#include "Interface.h"
void Interface::input() {
 
Teplitsa *kaka;
    kaka = new Teplitsa;
    printStatus(*kaka);
 
}
 
void Interface::printStatus(Teplitsa *kaka) {
    
    string statuss = kaka.statusss();
    cout  << endl << statuss << endl;
    cout << endl << "-------------------------------------------------" << endl;
 
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
//Interface.h
#include "Teplitsa.h"
 
 
class Interface {
private:
//
public:
    //
    void printStatus(Teplitsa *kaka);
    //
};
Где косяк в синтаксисе?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2017, 02:33
Ответы с готовыми решениями:

Передача метода класса в качестве параметра для метода другого класса
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог...

Указатель на метод класса в качестве аргумента метода класса
Функция _createFun вызывается для создания ХХХ в основном классе. Но вот потребовалось создать ХХХ...

Использование в качестве поля класса указатель на объект другого класса
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс...

двумерный массив в качестве параметра метода класса
Добрый день Есть проблемка, попробую упростить условия по максимуму: В программе меется некоторый...

6
с++
1275 / 518 / 223
Регистрация: 15.07.2015
Сообщений: 2,555
08.04.2017, 04:56 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef _Interface_h
#define Interface_h
//Interface.h
#include "Teplitsa.h"
 
 
class Interface {
private:
//
public:
    //
    void printStatus(Teplitsa *kaka);
    void input();
    //
};
#endif
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
08.04.2017, 11:26  [ТС] 3
Это конечно круто, но делу не помогло(
0
Любитель чаепитий
3675 / 1750 / 544
Регистрация: 24.08.2014
Сообщений: 5,896
Записей в блоге: 1
08.04.2017, 11:41 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Interface.cpp
#include "Interface.h"
void Interface::input() {
 
Teplitsa *kaka;
    kaka = new Teplitsa;
    printStatus(*kaka); // <--- разыменовывая указатель передается уже не указатель, а сам объект/ссылка на него
 
}
 
void Interface::printStatus(Teplitsa *kaka) {
    
    string statuss = kaka.statusss(); // <--- для указателей используется другой синтаксис вызова функций-членов.
    cout  << endl << statuss << endl;
    cout << endl << "-------------------------------------------------" << endl;
 
}
Добавлено через 36 секунд
плюс где в классе Interface метод input объявлен?
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
08.04.2017, 12:58  [ТС] 5
Ого-ого, меня осенило, лаба скомпилилась. Правда возникла другая проблема, попробую пока решить её самостоятельно.

Добавлено через 32 минуты
Каким будет синтаксис, при вызове метода класса Teplitsa в классе Interface, объект класса Teplitsa был инициализирован через указатель в поле private класса Interface? Я понимаю что надо его разыменовывать, но беда в синтаксисе моём(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Interface {
private:
    //
    Teplitsa *kaka = new Teplitsa;
       //
public:
    void input();
    void get_input(int a, int &chas);
    void nul(int &chas);
    void odin();
    void dva();
    void chetiri();
    void pyat();
    void printStatus();
    void help_menu()const;
};
//Вот допустим в методе класса Interface, хочу вызвать метод класса Teplitsa
C++
1
2
3
4
5
void Interface::nul(int &chas) {
    kaka.time_go();//Неправильный вызов
    if (kaka.isTeplitsaPabotaet() == true)//Неправильный вызов
        chas++;
}
0
Любитель чаепитий
3675 / 1750 / 544
Регистрация: 24.08.2014
Сообщений: 5,896
Записей в блоге: 1
08.04.2017, 13:21 6
Лучший ответ Сообщение было отмечено Nikita07 как решение

Решение

указатели могут обращаться к методам и полям класса через оператор ->.
то есть не kaka.time_go();, а kaka->time_go();, с остальными аналогично.

Добавлено через 1 минуту
и в деструкторе класса Interface не забудь delete для kaka вызвать, а то будет утечка.
а лучше вообще память в конструкторе выделять, а не прямо в классе.
1
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
08.04.2017, 13:26  [ТС] 7
Отлично, спасибос!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2017, 13:26

Передача члена класса в качестве параметра метода
Добрый день. Интересует следующий вопрос: как передать член класса как параметр по значению в метод...

[C++, OpenGL, glut] передача метода класса в качестве параметра функции glutDisplayFunc()
Пишу программу для обхода бинаронго дерева поиска. Программа написана и кажется даже работает, но...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); }...

Объект класса вызываемого Yii
Господа. Подскажите пожайлуйста, у меня есть класс подключаемый следующим образом: 'class' =&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru