| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 358 人关注过本帖
标题:类摸板和重载<操作符的问题,求助 。
只看楼主 加入收藏
wuyun8536
Rank: 2
等 级:论坛游民
帖 子:21
专家分:77
注 册:2009-6-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
类摸板和重载<操作符的问题,求助 。
前几天在这个论坛上看的一个程序!编译没有问题,链接时出现问题:
Linking...
D:\MinGWStudio\Templates\w\Debug\w.o(.text+0x9b): In function `main':
D:\MinGWStudio\Templates\w\w.cpp:48: undefined reference to `operator<<(std::ostream&, Vec3<double> const&)'

程序如下:

w.exe - 1 error(s), 0 warning(s)
#include<iostream>
using namespace std;

template<typename W>
 class Vec3;
    
template<typename U>
 ostream& operator<<(ostream&,const Vec3<U>&);

template<typename T>
 class Vec3
{
private:
    T x;
    T y;
    T z;
public:
    T GetX()const{return x;}
    T GetY()const{return y;}
    T GetZ()const{return z;}
   
    Vec3<T>(T a,T b,T c):x(a),y(b),z(c){}
    friend ostream& operator<<(ostream&,const Vec3<T>&);
    friend Vec3<T> operator+(Vec3<T>& x,Vec3<T>& r);

};

  template<typename T>
  ostream& operator<<(ostream& out,const Vec3<T>& r)
    {
           out<<"("<<r.GetX()<<","<<GetY()<<","<<GetZ()<<")";
           return out;
    }
  
  template<typename T>
  Vec3<T> operator+(Vec3<T>& x,Vec3<T>& r)
    {
     Vec3<T> a;
     a.x=x.GetX()+r.GetX();
     a.y=x.GetY()+r.GetY();
     a.z=x.GetZ()+r.GetZ();
      return a;
    }
int main()
{
    Vec3<double> a(1,2,3);
    Vec3<double> b(3,4,5);
    cout<<a;
    return 0;
}
搜索更多相关主题的帖子: 重载 
2009-07-23 10:27
ET_bug
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:黑侠
帖 子:89
专家分:602
注 册:2009-7-21
收藏
得分:7 
类模板的问题看的我也头大...
看提示好像是未定义的引用operator<<(std::ostream&, Vec3<double> const&)
我也不太懂,希望有高手帮帮LZ

编程之路无止境!
可是小子才入门!
2009-07-23 10:37
cxn8801
Rank: 2
等 级:论坛游民
帖 子:11
专家分:37
注 册:2008-9-10
收藏
得分:7 
...
#include<iostream>
using namespace std;

template<typename T>
class Vec3
{
   friend ostream& operator<<(ostream& out ,  Vec3<T>& r)
   {
     out<<"("<<r.GetX()<<","<<r.GetY()<<","<<r.GetZ()<<")"<<endl;
     return out;
   }
   
   friend   Vec3<T> operator+( Vec3<T>& x, Vec3<T>& r)
   {
     Vec3<T> a;
     a.x=x.GetX()+r.GetX();
     a.y=x.GetY()+r.GetY();
     a.z=x.GetZ()+r.GetZ();
     return a;
   }

   public:
      Vec3(T a,T b,T c)
         :x(a),y(b),z(c){}
         
      T GetX()
      {
         return x;
      }
      T GetY()
      {
         return y;
      }
      T GetZ()
      {
         return z;
      }
   
     private:
        T x;
        T y;
        T z;

};


   
int main()
{
    Vec3<int> a(1,2,3);
    Vec3<double> b(3,4,5);
    cout<<a;
    return 0;
}
2009-07-23 17:34
快速回复:类摸板和重载<操作符的问题,求助 。
数据加载中...
 
   



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

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