Такой вопрос:
Как известно, если объявляешь указатели вот так:
float *a, *b, *c;
то перед каждым именем переменной надо ставить знак *
Теперь объявим указатели на члены класса:
float Class:: *a, *b, *c;
Получилась такая фигня:
a — это указатель на слен класса Class
b, c — это указатели на указатели на члены класса Class
Почему получается именно так?
PS: как это дело обходить предлагать не надо
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, ArtDenis, Вы писали:
AD>Такой вопрос:
AD>Как известно, если объявляешь указатели вот так:
AD>AD>float *a, *b, *c;
AD>
AD>то перед каждым именем переменной надо ставить знак *
AD>Теперь объявим указатели на члены класса:
AD>AD>float Class:: *a, *b, *c;
AD>
AD>Получилась такая фигня:
AD>a — это указатель на слен класса Class
AD>b, c — это указатели на указатели на члены класса Class
На чем проверял?
На VC7.1 b и с — просто указатели на float.
AD>Почему получается именно так?
AD>PS: как это дело обходить предлагать не надо
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Здравствуйте, folk, Вы писали:
f> На чем проверял?
f> На VC7.1 b и с — просто указатели на float.
На билдере. Сейчас пойду на обед домой, проверю на VC7.1
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, folk, Вы писали:
f> На чем проверял?
f> На VC7.1 b и с — просто указатели на float.
Кстати, Online Comeau со мной согласен:
struct Class
{
float a, b;
};
void test()
{
float value;
float Class:: *a, *b;
Class cl = {0, 0};
a = &Class::a;
value = cl.*a;
b = &Class::b;
value = cl.*b;
}
Компилятор спотыкается на "b = &Class::b"
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, ArtDenis, Вы писали:
AD>Такой вопрос:
AD>...
Да, лопухнулся, надо объявлять так:
float Class::*a, Class::*b;
... << RSDN@Home 1.1.2 stable >>