Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перегрузка operator+ 
V
    Опции темы
vinter
Дата 4.2.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



вообщем проблема, есть шаблон в нем обьявлен оператор
Код

template <class Type> class Matrix
{
....................

    friend Matrix<Type> operator+<>(const Type Variable,const Matrix<Type> SecObj);
...........
};

определение
Код

Matrix<Type> operator+(Type Variable, Matrix<Type> SecObj)
{
    Matrix<Type> Temp(SecObj.GetRows(), SecObj.GetColumns());
    for(int i = 0; i < SecObj.GetRows(); i++)
        for(int j = 0; j < SecObj.GetColumns(); j++)
            *(*(Temp.pMatrix) + i + j) += Variable
    return Temp;
}

ошибки
Код

d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2143: syntax error : missing ';' before '<'
        d:\Programming\Open Projects\Matrix\Matrix.h(38) : see reference to class template instantiation 'Matrix<Type>' being compiled
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2460: 'operator`+'' : uses 'Matrix<Type>', which is being defined
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2433: 'operator`+'' : 'friend' not permitted on data declarations
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2238: unexpected token(s) preceding ';'
d:\Programming\Open Projects\Matrix\Matrix.h(277) : error C2904: '+' : name already used for a template in the current scope
        d:\Programming\Open Projects\Matrix\Matrix.h(34) : see declaration of 'operator`+''
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2143: syntax error : missing ';' before '<'
        d:\Programming\Open Projects\Matrix\Main.cpp(6) : see reference to class template instantiation 'Matrix<Type>' being compiled
        with
        [
            Type=int
        ]
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2460: 'operator`+'' : uses 'Matrix<Type>', which is being defined
        with
        [
            Type=int
        ]
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2433: 'operator`+'' : 'friend' not permitted on data declarations
d:\Programming\Open Projects\Matrix\Matrix.h(34) : error C2238: unexpected token(s) preceding ';'
d:\Programming\Open Projects\Matrix\Main.cpp(21) : error C2677: binary '+' : no global operator found which takes type 'Matrix<Type>' (or there is no acceptable conversion)
        with
        [
            Type=int
        ]

при другом обьявлении
Код

template <class Type> class Matrix
{
....................

    friend Matrix<Type> operator+(const Type Variable,const Matrix<Type> SecObj);
...........
};

ошибки
Main.obj : error LNK2019: unresolved external symbol "class Matrix<int> __cdecl operator+(int,class Matrix<int>)" (??H@YA?AV?$Matrix@H@@HV0@@Z) referenced in function _main
Debug/Matrix.exe : fatal error LNK1120: 1 unresolved externals

IDE VS2003, подскажите в чем ошибка и есть ли она вооще или это compiler bag


--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 4.2.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vinter @  4.2.2007,  16:26 Найти цитируемый пост)
 подскажите в чем ошибка и есть ли она вооще или это compiler bag 

плохая мысль
Цитата(vinter @  4.2.2007,  16:26 Найти цитируемый пост)
 friend Matrix<Type> operator+(const Type Variable,const Matrix<Type> SecObj);

не верно
Код

template< typename U >
friend Matrix<U> operator+(const U& Variable,const Matrix<U>& SecObj);

PM MAIL WWW   Вверх
vinter
Дата 4.2.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



спасибо


--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.