| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1073 人关注过本帖
标题:我又来求助了:涉及到的知识:泛型编程,模板类,操作符重载,代码和问题在帖子里 ...
只看楼主 加入收藏
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:16 
我又来求助了:涉及到的知识:泛型编程,模板类,操作符重载,代码和问题在帖子里面
代码如下:
程序代码:
#include <iostream>
#include <iterator>

 using namespace std;

 

 template <typename T>

 class complex

 {
     public:
         //complex(){real = 0;imag = 0;}
           complex(T oreal,T oimag)
        {
            real = oreal;
            imag = oimag;
        }
        //template<typename T2>
         complex operator+ (complex<T> c2)
         {
            c2.real=real+c2.real;
            c2.imag=imag+c2.imag;     
            return c2;    
         }
    public:
         inline T getReal(){return real;}
         inline T getImag(){return imag;}
     private:
     
         T real;
        T imag; 
         

 };

 

 namespace std
{ 
    template <typename T2>
    std::ostream& operator<< (std::ostream& os, const complex <T2> c)
     {
        return os<<c.getReal()<<"+"<<c.getImag()<<"i";    
     }

 }

 int main()

 {     
     complex<float> a(10,5);
     complex<float> b(2.2,6.0);
     complex<float> c=a+b;
     cout<<c<<"\n";
     return 0;

 }

报错信息:
        return os<<c.getReal()<<"+"<<c.getImag()<<"i";    discards qualifers

去掉const 就能执行,不去掉const就执行不了,求大神分析,对const的理解还不够好。
搜索更多相关主题的帖子: complex 知识 
2013-08-04 21:03
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:10 
友情提示一下,const是一个传染型的东西

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 08:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:10 
程序代码:
template<typename T>
class complex
{
public:
    complex( T oreal=T(), T oimage=T() ) : real_(oreal), image_(oimage)
    {
    }
    complex operator+( const complex<T>& c )
    {
        return complex( real_+c.real_, image_+c.image_ );
    }

    inline T real() const { return real_; }
    inline T image() const { return image_; }

private:
    T real_;
    T image_;
};

#include <iostream>

template <typename T>
std::ostream& operator<< (std::ostream& os, const complex<T>& c)
{
    return os << c.real() << '+' << c.image() << 'i';
}

using namespace std;

int main()
{    

    complex<double> a(10,5);
    complex<double> b(2.2,6.0);
    complex<double> c = a+b;
    cout << c << endl;

    return 0;
}
2013-08-05 08:29
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 3楼 rjsp
大神的代码没完全看明白,只看懂了一点,"+"的操作符重载这块写的比我自己写的省内存。
但是不明白为什么要把inclue 和using namespace 的位置调整成这样呢?想知道一些原理性的东西。
还希望不吝赐教。
2013-08-05 10:00
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
include这个,没什么深意吧

你没看懂他的代码,那你看看他跟你的代码加了什么
我说过const会传染的

[ 本帖最后由 peach5460 于 2013-8-5 10:44 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 10:33
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 5楼 peach5460
还望明示,实在看不出来加了什么,我就看到在重载"<<"的时候加了一个引用,我尝试了一下,依然编译通过不了,我用的编译环境是C-FREE 5.0.
2013-08-05 14:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 6楼 纯黑色
inline T getReal() const {return real;}
inline T getImag() const {return imag;}
2013-08-05 15:08
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 7楼 rjsp
我可以理解成为数据类型不同造成的问题吗?
2013-08-05 15:26
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 8楼 纯黑色
就是数据类型不同
const int 和int是两种类型
依此类推

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 15:55
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 9楼 peach5460
受教了。恕我愚钝,刚开始一直没理解您的提示.
2013-08-05 16:11
快速回复:我又来求助了:涉及到的知识:泛型编程,模板类,操作符重载,代码和问题在 ...
数据加载中...
 
   



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

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