Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Проблема компиляции шаблонов в MVS 2005


Автор: Kvanttt 18.10.2009, 15:19
Уж не знаю, в ту ли ветку я пишу или это нужно все-таки в общие вопросы?
На gamedev писались статьи про движок GUNEngine. Так вот какая проблема: море ошибок при компиляции (около 500 штук), причем большинство на каких-то определенных строчках. И эти проблемы скорее всего связаны с шаблонами, потому что допустим в первых четырех уроках этих ошибок нет (допустим http://gungine.gamedev.ru/step4.shtml), а начиная с 5-го начинается море ошибок вида 

Error  584  error C2143: syntax error : missing ';' before '&'  d:\программирование\графика\opeg_gl_programming\step5\src\gunquaternion.h  36 
Error  585  error C4430: missing type specifier - int assumed. Note: C++ does not support default-int  d:\программирование\графика\opeg_gl_programming\step5\src\gunquaternion.h  36 
Error  4  error C2327: 'gun_vector::vecarg<const float>::ta_a' : is not a type name, static, or enumerator  d:\программирование\графика\opeg_gl_programming\step5\src\gunvector.h  37 
Error  8  error C2065: 'A' : undeclared identifier  d:\программирование\графика\opeg_gl_programming\step5\src\gunvector.h  37

вот на таком участке кода:

template< class ta_a > 
    class vecarg 
    { 
        const ta_a& Argv; 
    public: 
        inline vecarg( const ta_a& A ) : Argv( A ) {} 
        inline const float Evaluate( const int i ) const 
        { return Argv.Evaluate( i ); } 
    };

    template< > 
    class vecarg< const float > 
    { 
        const ta_a& Argv; 
    public: 
        inline vecarg( const ta_a& A ) : Argv( A ) {} 
        inline const float Evaluate( const int i ) const 
        { return Argv; } 
    };

Кто знает, что нужно поменять, чтобы это все заработало? Очень нужно для курсовой))

Автор: ИванМ 18.10.2009, 18:38
Код

template< class ta_a > 
class vecarg 
{ 
    const ta_a& Argv; 
public: 
    inline vecarg( const ta_a& A ) : Argv( A ) {} 
    inline const float Evaluate( const int i ) const 
    { return Argv.Evaluate( i ); } 
};

template< > 
class vecarg< float > 
{ 
    const float& Argv; 
public: 
    inline vecarg( const float& A ) : Argv( A ) {} 
    inline const float Evaluate( const int i ) const 
    { return Argv; } 
};

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)