Перечитываю Джэфф Элджер "C++" (Jeff Alger C++ for real programmers). ISBN 5-8046-0045-1 Нашел песдатую штуку "Указатель на переменную класса" (стр 267). Следующий пример: class Foo{ private: int x; public: static int & Foo::*X() { return &Foo::x; } }; Foo f = new Foo; // тут видать у него опечатка int& Foo::*pm = Foo::X(); // вся магия нах. вычисляет смещение для int int& i = f->*pm; // применяет смещение к экземпляру полная магия нах. хочу такое сделать, но компиляторы вопят: cannot declare pointer to 'int&' ладно. читаю у него дальше: "Все эти int& можно заменить на int*" - меняю - получаю: test.cpp: In static member function 'static int* Test::* Test::X()': test.cpp:5: error: cannot convert 'int Test::*' to 'int* Test::*' in return test.cpp: In function 'int main(int, char**)': test.cpp:10: error: cannot declare pointer to 'int&' ** в общем хер с ним 5-ой строки уже хватает ** test.cpp:10: error: cannot convert 'int* Test::*' to 'int Test::*' in initializa tion test.cpp:11: error: invalid conversion from 'int' to 'int*' make: *** [all] Ошибка 1 ------------------ мой пример в аттачменте, вообще у меня волосы дыбом лезут во первых использовать Foo:: внутри class Foo:: - имхо это ж вообще лажа. Во вторых интересно такое вообще можно сделать? ты сталкивался с такой фиговиной? пробовал несколько разных g++ Что это фантазии затуманеного чем-то мозга Джеффа? Опечатка или я туплю? Кто-нибудь сталкивался с таким? И что это за дикий синтаксис. (MSVC ругается после замены int& на int*: test.cpp(5) : error C2440: 'return' : cannot convert from 'int Test::*' to 'int *Test::* ' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast test.cpp(10) : error C2636: '<Unknown>' : pointer to reference member is illegal
Ответ на:
комментарий
от sergej
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум C++ templates (2009)
- Форум Поглумиться над cl.exe (2006)
- Форум [c++] не получается вызвать функцию-шаблон (2007)
- Форум C++ что бы это значило ??? (2008)
- Форум gcc : шаблоны, наследование ? (2007)
- Форум [C++] доступ к полям предков при наследование шаблонов (нубовский вопрос) (2011)
- Форум Статические функции члены в С++ (2009)
- Форум [Qt] проблеммы при наследовании классов Qt и своих классов. (2010)
- Форум [C++] имя метода как аргумент — как? (2005)
- Форум linux gtkmm c++ g++: class Gtk::Application’ has no member named ‘make_window_and_run’ (2022)