Другие языки программирования и технологии

c++: можно ли передать в класс адрес, описанного в нём элемента данных?

т.е. класс уже есть, возможно ли его видоизменить. Есть ли другие варианты
MB
Maksim Belov
94 144
Класс - это абстракция - тип данных. В него никто ничего передать не сможет.

Чтобы объект мог получить адрес своего же поля данных. Нужно в классе определить указатель на тип этого поля данных. После того как объект будет создан. Сперва следует инициализировать поле, а затем взять его адрес и присвоить указателю.

#include <iostream>
using namespace std;
class foo {
public:
    foo() : var(0), ptr(NULL) { }
    foo(int _var) : var(_var) { ptr = &var; }
    int get_var() { return var; }
    int * get_ptr() { return ptr; }
    void set_var(int _var) { var = _var; }
    void set_ptr(int * _ptr) { ptr = _ptr; }
private:
    int var;
    int * ptr;
};
int main() {
    foo obj(5);
    cout
Ольга И Александр
Ольга И Александр
92 818
Лучший ответ
Maksim Belov "Они убили Кенни... Сволочи" (с) Этот вариант как раз и реализован, видимо здесь столкнулся с ограничениями ооп
>класс уже есть, возможно ли его видоизменить
Наследование, полиморфизм - не?
MK
Mir Kg
56 162
Maksim Belov Да хоть как. Хотелось бы добавить функционал для чужой разработки оптимальным образом. Тупо синтаксис интересует. Обычно, память выделяется для элемента класса, а что надо написать, если часть памяти уже выделено
короч смотри
у тебя есть класс коржик, от которого наследуются классы пирожено и морожено
у коржика есть метод схавать
но в пирожене он имплементируется как пожевать с чаем, а в морожене - полызькать
и вот у тебя пакет для коржиков. И ты туда наложил в перемешку пироженые и мороженые и тебе пофиг что ты от туда достанеш, ты вызываеш метод схавать. а уже реализация вызовется автоматом в зависимости от того что достанешь
вот это полиморфизм
Maksim Belov Спасибо, кэп. Но с теорией у меня вроде как нормально, а вот с реализация хромает. У меня, как к Вини Пуха, "правильнописание хромает"

Похожие вопросы