标题:(请教)关于模板与vector与运算符重载
取消只看楼主
caoaihua3
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-4-20
 问题点数:0 回复次数:1 
(请教)关于模板与vector与运算符重载
小弟试图通过vector类来定义一矩阵,定义过程如下:
template <typename T>
class Matrix{
      typedef Matrix<T> MYT;
      public:
            Matrix(){};
            Matrix(int r1,int j1);
            T& operator ()(int row,int line);
            const T operator ()(int row,int line) const;
            int get_row(const MYT&);
            int get_line(const MYT&);
            MYT operator +(MYT& temp1,MYT& temp2);
      private:
            int nr,nc;
            vector<vector<T> > mat;
};
经过编译,结果提示错误如下:
14 D:\Program Files\DEV-CPP\WORK\matrix\matrix3.h `Matrix<T> Matrix<T>::operator+(Matrix<T>&, Matrix<T>&)' must take either zero or one argument

17 D:\Program Files\DEV-CPP\WORK\matrix\matrix3.h ISO C++ forbids declaration of `vector' with no type
改了很多次,都没有搞清楚问题在哪,希望达人帮帮忙
搜索更多相关主题的帖子: 运算符 vector 模板 重载 
2008-03-21 10:15
caoaihua3
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-4-20
得分:0 
按照达人的指点,又仔细看了一下书,将+运算付改成了友元函数,如下
class Matrix{
      typedef Matrix<T> MYT;
      friend MYT operator+(MYT& ,MYT&);
      public:
            Matrix(){};
            Matrix(int r1,int j1);
            T& operator ()(int row,int line);
            const T operator ()(int row,int line) const;
            int get_row(const MYT&);
            int get_line(const MYT&);
      public:
            int nr,nc;
            vector<T > mat;
};
  结果编译还是有问题:

7 D:\Program Files\DEV-CPP\WORK\matrix\matrix3.h [Warning] friend declaration `Matrix<T> operator+(Matrix<T>&, Matrix<T>&)' declares a non-template function
17 D:\Program Files\DEV-CPP\WORK\matrix\matrix3.h ISO C++ forbids declaration of `vector' with no type
再请问一下达人上述问题怎么搞....
2008-03-21 14:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-204505-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.313784 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved