crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> проблемка с шаблонными функциями
voipp
  опции профиля:
сообщение 20.12.2009, 17:02
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


шаблонные функции :
template <typename x> void Main_matrix_class::Move(const CVector &direct, x &matrix,bool straight){
    initMtransfer(direct);
    if(straight){
    matrix*=mMove;
    if(!this->dontmovemReformation)this->mReformation*=mMove;//esli dontmovemReformation=true togda mReformation dvigatbsia ne budet
                                                              //v protivnom sluchae mReformation budet izmeniatbcia
}
    else{
        matrix*=(!mMove);
        if(!this->dontmovemReformation)this->mReformation*=(!mMove);
    };

};
//-------------------------------------------------------------------------------------------------------------
template <typename x> x Main_matrix_class::prIsometric(const x &matrix){
    x isomatr(matrix);
    if(isomatr.getHeight()){
    for(int i=0;i<matrix.getHeight();i++){
        isomatr[i][0]=matrix[i][0]*(600/(800-matrix[i][2]));
        isomatr[i][1]=matrix[i][1]*(600/(800-matrix[i][2]));
        isomatr[i][3]=1;
    }
}
else{

    isomatr[0]=matrix[0]*(600/(800-matrix[2]));
    isomatr[1]=matrix[1]*(600/(800-matrix[2]));
    isomatr[3]=1;

    }
//-----------------------------------------------------
// X=x*(z0-z1)/(z0-z)
// Y=y*(z0-z1)/(z0-z)
// z0 - koordinata centra proekcii
// z1 - koordinata kartinnoy ploskosti
// x,y,z - koordinatbI tochki
// X,Y - koordinatbI tochki na kartinnoy ploskosti posle deystviya proekcii
//-----------------------------------------------------
    return isomatr;
};

Вот их опредления :
 template <typename x> void Move(const CVector &direct,x &matrix,bool straight);
template <typename x> x prIsometric(const x &matrix);

Вот как они используются в одной программе :
m.Move((-1) * center,m.mObject,1);
m.prIsometric(mIso);

m - экземпляр класса где находятся шаблонные функции
center m.mObject,mIso - CVector и два CMatrix
Вот ошибка компилятора -
make: *** [LAB3] Ошибка 1
Exited with code 2.
Error while building project LAB3
When executing build step 'Make'

Пробовал исправить отладчиком но при отладке точки остановки он не видит(отладчик исправен)0_0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 21.12.2009, 9:25
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


2 voipp Определение шаблонных функций - это их код - его ты привёл в первом куске кода. Во втором - объявления. :)
Подобная ошибка может появится тогда, когда определение шаблона находится в одном С++ файле а его использование - в другом.

Наиболее просто исправляется помещением определения в заголовок (*.h) :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 7:26