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

Ошибка: friend declaration declares a non-template function - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм сортировки http://www.cyberforum.ru/cpp-beginners/thread82927.html
Ребята, помогите сделать код... мне нужно вывести на екран даные из фаила (таблицу) так чтобы она сортировалась по убыванию скажем, столбец termen(срок годности продукта) чтобы сортировался по убыванию есть библиотека FILE *f; struct marfa { char nume_produs; char nume_producator; float greutatea;
C++ Массив Дана последовательность чисел, которая имеет одинаковые элементы. Отсортировать по возрастанию методом выбора , исключить одинаковые элементы. Сама сортировка понятна. А как исключить одинаковые элементы? Помогите. На С http://www.cyberforum.ru/cpp-beginners/thread82920.html
C++ посчитать квадрат матрицы
С++ Даны две вещественные квадратные матрицы 10-го порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считать, что такая матрица одна.
Командная строка. Безтиповой указатель. C++
Вот примерная прога которая должна запускаться на борланде. Вопрос в следующем можно ли написать эту ф-цию для среды Visual(проблема заключается в наращивании шага безтипового указателя) Заранее спасибо. //функция для нахождения среднего арифметического чисел типа float. double arithmetic1(double k,...) { void *p; double sum=0; p=(double*)&k; ((double*)p)+=1; for(int i=0; i<k;...
C++ Ошибка при выводе самой длинной строчки. http://www.cyberforum.ru/cpp-beginners/thread82888.html
#include<iostream.h> #include<conio.h> #include<string.h> using namespace std; void main() {string s;int n,k,min; cout<<"koli4estvo stro4ek"<<" ";cin>>n; clrscr(); for (k=0;k<n;k++)
C++ Вывод long double с используя printf() #include <iostream> #include <cmath> long double R(int n, int r) { long double sq = (long double) sqrt((long double)r*r - ((long double)n/2)*((long double)n/2)); long double res = (long double) sq*2*n + 3.1415926535*r*r*4* acos((long double) ( (long double) ((long double) n/2 - sq)/2 )* ( (long double) ((long double) n/2 - sq)/2 ) - 2); подробнее

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

Ошибка: friend declaration declares a non-template function - C++

06.01.2010, 04:53. Просмотров 1778. Ответов 3
Метки (Все метки)

Всем доброго времени суток!
Я корплю над задачкой: нада сделать класс вектор шаблонным, перегрузить операции ввода-вывода, и тд и тп.
Вот с вводом-выводом у меня и проблемы.
Вернее со всеми шестью 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
template <class T, int N> class Vector //int N - template value of vector elements
{
    int size; //current size of vector (number of elements)
    int max; //max number of elements
    T * value;
 
public:
    Vector();
    virtual ~Vector();
    Vector(int max);
    Vector(const Vector<T, N> & v);
 
    int getSize() const;
    void setSize(int size);
 
    T & operator[](int i);
 
    Vector<T, N> & operator=(const Vector<T, N> & v);
 
    bool operator==(const Vector<T, N> & v);
    bool operator!=(const Vector<T, N> & v);
    bool operator>(const Vector<T, N> & v);
    bool operator>=(const Vector<T, N> & v);
    bool operator<(const Vector<T, N> & v);
    bool operator<=(const Vector<T, N> & v);
 
    /*1*/friend const Vector<T, N> & operator+(const Vector<T, N> & v1, const Vector<T, N> & v2);
    /*2*/friend const Vector<T, N> & operator-(const Vector<T, N> & v1, const Vector<T, N> & v2);
    /*3*/friend const Vector<T, N> & operator*(const Vector<T, N> & v1, const Vector<T, N> & v2);
    /*4*/friend const Vector<T, N> & operator/(const Vector<T, N> & v1, const Vector<T, N> & v2);
 
    const Vector<T, N> & operator+=(const Vector<T, N> & v);
    const Vector<T, N> & operator-=(const Vector<T, N> & v);
    const Vector<T, N> & operator*=(const Vector<T, N> & v);
    const Vector<T, N> & operator/=(const Vector<T, N> & v);
 
    /*5*/friend std::istream & operator>>(std::istream & is, Vector<T, N> & v);
    /*6*/friend std::ostream & operator<<(std::ostream & os, const Vector<T, N> & v);
};

На них (на функции 1-6) выдает не ошибку, а предупреждение (я токо хэдер написала еще)
предупреждение такое:

Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Vector.d" -MT"Vector.d" -o"Vector.o" "../Vector.cpp"
In file included from ../Vector.cpp:8:
../Vector.h:40: warning: friend declaration ‘const Vector<T, N>& operator+(const Vector<T, N>&, const Vector<T, N>&)’ declares a non-template function
../Vector.h:40: note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here)
../Vector.h:41: warning: friend declaration ‘const Vector<T, N>& operator-(const Vector<T, N>&, const Vector<T, N>&)’ declares a non-template function
../Vector.h:42: warning: friend declaration ‘const Vector<T, N>& operator*(const Vector<T, N>&, const Vector<T, N>&)’ declares a non-template function
../Vector.h:43: warning: friend declaration ‘const Vector<T, N>& operator/(const Vector<T, N>&, const Vector<T, N>&)’ declares a non-template function


Когда гуглила много раз находила, что нада сделать вот такое:
C++
1
2
friend std::istream & operator>> <>(std::istream & is, Vector<T, N> & v);
    friend std::ostream & operator<< <>(std::ostream & os, const Vector<T, N> & v);
но на такую запись выдает не предупреждение а ошибку (хочет сразу за < поставить ; )

Подскажите, пожалуйста, как можно решить эту проблемку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru