Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов шаблонного класса дружественными функциями - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переименование файлов, заменяя определенные символы знаком дефиса http://www.cyberforum.ru/cpp-beginners/thread1131494.html
Пытаюсь сделать программа, которая переименовывает названия картинок. Допустим, если картинки были названы так: hello world test.jpg bla-bla-bla.jpg test_word.jpg то после обработки программой - они должны выглядеть так: hello-world-test.jpg bla-bla-bla.jpg test-word.jpg
C++ Корень n-й степени Всем доброго времени суток. Как взять корень n-й степени? При использовании данного варианта: pow(x, (1/n)) в ответ всегда идет 1. Что делаю не так? http://www.cyberforum.ru/cpp-beginners/thread1131483.html
C++ Удаление из текста слов, состоящих из 4 букв
Помогите пожалуйста с программкой... вот задание: а) ввести текст с клавиатуры (в тексте содержатся пробелы) б) удалить из текста все слова, состоящие из 4 букв в) вывести измененный текст на экран и если не трудно, с объяснениями...
Последовательность 100 чисел. Вывести в порядке 2, 99, 4, 97, 6, 95, ., 96, 5, 98, 3 C++
Задачу сам выдумал, а решить не могу. Нужно вывести в порядке 2, 99, 4, 97, 6, 95, ..., 96, 5, 98, 3 #include <iostream> using namespace std; int main() { int count,countrew; for(count = 2; count <= 99; count++){ cout << count << ", ";
C++ Есть динамический массив с размерностью 5, необходимо его сделать с размерностью 6, заполнить цифрами и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread1131457.html
День добрый. Не хочется никому морочить голову дурацкими вопросами, поэтому стараюсь находить на все свои вопросы ответы сам. Но тут я столкнулся с совершенно непонятной для меня проблемой и решение ее нигде не могу найти. Когда я запускаю выполнение программы на экран выводится полная ерунда , но если запустить отладчик все нормально и на экран выводятся данные динамического массива. Из-за...
C++ Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент Помогите решить задачу 15. Дана целочисленная прямоугольная матрица: а) определить номер первого из столбцов, содержащих хотя бы один нулевой элемент; б) характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик. Добавлено через 2 минуты подробнее

Показать сообщение отдельно
yuriillusion
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 9

Перегрузка операторов шаблонного класса дружественными функциями - C++

27.03.2014, 19:08. Просмотров 474. Ответов 1
Метки (Все метки)

При попытке скомпилировать проект выдаются следующие ошибки:

Error 1: error LNK2019: unresolved external symbol "class matrix<int> __cdecl operator+(class matrix<int> &,class matrix<int> &)" (??H@YA?AV?$matrix@H@@AAV0@0@Z) referenced in function _main

Error 2: error LNK1120: 1 unresolved externals

В исходном проекте также были внутренние методы класса - они стабильно работали. Все friend функции, описанные нижеприведённым способом, приводили к таким же ошибкам.

Почему возникают такие ошибки и как разрешить проблему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
template <class T>
class matrix
{
    T** mtr;
public:
    int size;
    matrix(int _size);
    friend matrix operator + (matrix &m1, matrix &m2);
    T* operator [] (int adress);    
};
template <class T> matrix <T> ::matrix(int _size)
{
    size=_size;
    mtr=new T*[size];
    for(int i=0; i<size; i++)
        *(mtr+i)=new T[size];
    for(int i=0; i<size; i++)
        for(int j=0; j<size; j++)
        {
            mtr[i][j]=static_cast<T>(0);
        }
}
template <class T> T* matrix <T> :: operator [] (int adress)
{
    return mtr[adress];
}
template <class T> matrix <T> operator + (matrix <T> &m1, matrix <T> &m2)      //Не работает
{
    if(m1.size!=m2.size)
    {
        //throw (BadSize());
        matrix <T> B(1);
        return B;
    }
    int sz=m1.size;
    matrix <T> A(sz);
    for(int i=0; i<sz; i++)
        for(int j=i; j<sz; j++)
            A[i][j]=m1[i][j]+m2[i][j];
    return A;
}
int main()
{
    matrix <int> A(3);
    matrix <int> B(3);
    A+B;
    return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru