Войти

Показать полную графическую версию : * Теория * | C++ Доступ к членам класса через указатели


Kincajou
30-07-2006, 13:35
Есть такие классы:

class class1
{
class2 *object2;
};


class class3
{
class1 *object1;
};



в main-файле объявляется переменная класса class3:

class3 object3;

нужно получить доступ к переменной, на которую указывает пойнтер object2.
Тут вся проблема в том, что нужно получить доступ к переменной, на которую указывает указатель object2, на который в свою очередь указывает указатель из другого класса object1. Object3 - не указатель.

object3.object1->*object2 не работает,
object3.object1->(*object2) тоже, в обоих случаях говорит object2 undeclared.
Какой же синтаксис тут правильный будет?

Vlad Drakula
30-07-2006, 13:47
а где прописано что эти проперти класса punlick?

object3.object1->object2

Kincajou
30-07-2006, 18:27
Не понял вопрос :) Что такое punlick?

Но проблема решилась. Экспериментально установил, что правильный вариант записи:

*(object3.object1->object2)

Во как! ;)

Vlad Drakula
30-07-2006, 20:20
Kincajou
Не понял вопрос Что такое punlick?
publick

*(object3.object1->object2)

Во как!
object3.object1->object2->****
(*(object3.object1->object2)).****

Kincajou
30-07-2006, 21:34
Это еще варианты? А чем отличаются от моего?

Прописано в паблике, конечно. Можно про **** подробнее? Ни в одной эл. книжке не встречал такого.

Vlad Drakula
30-07-2006, 21:47
Kincajou
object3.object1->object2->имя_функции
(*(object3.object1->object2)).имя_функции
это синонимы... в данном случае.

Экспериментально установил, что правильный вариант записи:
нужно не эксперементально устанавливать а почитать книжку по C++ там про это на писано ;)

pva
30-07-2006, 22:36
class class2;

class class1
{
class2* c2ptr;
};

скорее всего откомпилируется, но обращение *class1.c2ptr не получится, т.к. компилятор ещё не знает структуру class2 (придирка к первому посту)

class class2;

class class1
{
class2* c2ptr;
};

class class2
{
...
}; // теперь всё нормально




© OSzone.net 2001-2012