CruxMortis
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Гуру, помогайте... Следующий кусок работает Цитата: class Class1{ public: static void Core(){ printf( "1\n" ); }; }; class Class2{ public: static void Core(){ printf( "2\n" ); }; }; template< class T > void Action() { T::Core(); } int main(int argc, char* argv[]) { Action< Class2 >(); return 0; } | следующий - тоже работает Цитата: class Class1{ public: static void Core(){ printf( "1\n" ); }; }; class Class2{ public: static void Core(){ printf( "2\n" ); }; }; class C { public: template< class T > void Action( T& t ) { t.Core(); } }; int main(int argc, char* argv[]) { C c; Class1 cl; c.Action( cl ); return 0; } | а следующий - нет Цитата: class Class1{ public: static void Core(){ printf( "1\n" ); }; }; class Class2{ public: static void Core(){ printf( "2\n" ); }; }; class C { public: template< class T > void Action() { T::Core(); } }; int main(int argc, char* argv[]) { C c; c.Action< Class2 >(); return 0; } | 'Class2' : illegal use of this type as an expression В чем тонкость? Спасибо. |