#include <iostream>
class Pri {
public:
Pri(int data, int time) {
this->data = data;
this->time = time;
}
void getter() const { std::cout << data << " : " << time<< " "; };
private:
int data,time;
};
class Event {
public:
Event(Pri & a, std::string s) { //коструктор в который передан объект
this->obj = &a;
this->eve = s; };
void getter2() {
std::cout << obj << " : " << eve ; // вывод адреса указателя
};
private:
std::string eve;
Pri* obj; //хранение объекта другого класса
};
int main() {
Pri s1(12, 21); // создание и инициализация объекта
s1.getter(); //вывод полей на экран
std::cout <<&s1<< std::endl; //проверка адреса объекта
Event g(s1, "asdfa"); // создание и инициализация объекта
g.getter2(); //вывод полей на экран
return 0;
}
Итак. Передача объекта класса Pri в класс Event происходит успешно. В ф-ии getter2 выводится правильный адрес переданного объекта s1. При попытке разыменования (*obj) естесно происходит ошибка. Но и при вызове"(obj.getter()" происходит ошибка. Вопрос как правильно работать с объектом класса внутри другого? Как достучаться до его родных геттеров и при инициализации объекта "g" вывести на экран"12,21 : asdfa "?
У Вас Ошибка в обращении к указателю. Для обращения к указателю необходимо использовать оператор ->
#include <iostream>
class Pri {
public:
Pri(int data, int time) : data(data), time(time) {}
void getter() const
{
std::cout << data << " : " << time<< " " << std::endl;
}
private:
int data;
int time;
};
class Event {
public:
Event(Pri& a, std::string s) : obj(&a), eve(s) {} //коструктор в который передан объект
void getter2()
{
obj->getter();
std::cout << eve << std::endl; // вывод адреса указателя
};
private:
std::string eve;
Pri* obj; //хранение объекта другого класса
};
int main()
{
Pri s1(12, 21); // создание и инициализация объекта
s1.getter(); //вывод полей на экран
Event g(s1, "asdfa"); // создание и инициализация объекта
g.getter2(); //вывод полей на экран
return 0;
}
Все доперло! Спасибо @VTT за наводящий вопрос)) Моя ошибка в синтаксисе std::cout << obj.getter() <<" : " << eve ; Нужно же просто вызвать геттер, а затем написать cout: obj->getter(); std::cout << " : " << eve ; Тогда все ок
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Разбираюсь с рисовкой в Qt, пытаюсь нарисовать свою графическую фигуру, используя QPainterPathДля этого создаю класс class PuzzlePiece : public QGraphicsPathItem
Можно ли заменить следующий цикл на какой-то стандартный алгоритм библиотеки?
Написал проверку для input-ов на наличие хотя бы 1-ого символа для того чтобы удалить атрибут disabled с кнопки отправкиВ условии так же указал если...