| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2038 人关注过本帖
标题:C++的运算符重载问题
只看楼主 加入收藏
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
C++的运算符重载问题
G:\C++工程\菜品\main.cpp(14) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 1786)
         Please choose the Technical Support command on the Visual C++
         Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.

菜品.exe - 1 error(s), 0 warning(s)
代码是这个,想知道 为什么,觉得应该没错的啊。
#include<iostream>
using namespace std;

class food
{
public:
    food(){};
    ~food(){};
    void print();
private:
    int money;//价钱
    int number;//数量
    friend food operator +(food &d1,food &d2);

};

food operator+ (food &d1,food &d2)  //普通函数的+好重载
{
    food f1;
    f1.money=d1.money+d2.money;
    f1.number=d1.number+d2.number;
    return f1;
}

void food::print()
{
    cout<<money<<endl;
    cout<<number<<endl;
}


int main()
{
    food f1(28,4),f2(36,9),f3;
    f3=f1+f2;
    cout<<f3.print<<endl;

    return 0;

}
搜索更多相关主题的帖子: command include warning public 
2016-11-09 19:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
INTERNAL COMPILER ERROR 是编译器这个程序本身出错了。
当然,你的代码本身也是很垃圾的
程序代码:
#include <iostream>

class food
{
public:
    food();
    food( int money, int number );
private:
    int money_;
    int number_;

    friend food operator+( const food& lhs, const food& rhs );
    friend std::ostream& operator<<( std::ostream& os, const food& f );
};

using namespace std;

food::food() : money_(), number_()
{
}
food::food( int money, int number ) : money_(money), number_(number)
{
}
food operator+( const food& lhs, const food& rhs )
{
    return food( lhs.money_+rhs.money_, lhs.number_+rhs.number_ );
}
std::ostream& operator<<( std::ostream& os, const food& f )
{
    return os << '(' << f.money_ << ',' << f.number_ << ')';
}

int main( void )
{
    food f1(28,4);
    food f2(36,9);
    food f3 = f1 + f2;
    cout << f3 << endl;

    return 0;
}

2016-11-10 08:23
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
收藏
得分:0 
谢谢版主指导,刚学,什么都不懂,还不怎么会用呢。版主想问一下:这个符号的作用?
food::food() : money_(), number_()
{
}   比如这句语句,好像也没什么功能实现的。
friend std::ostream&   这个是不是编译器的问题啊?要加上std::的符号。

我想做的,只是静静的把C学好,从此代码是爱人......
2016-11-10 15:22
夏天的飞鸟
Rank: 2
来 自:海底两万里
等 级:论坛游民
威 望:1
帖 子:24
专家分:70
注 册:2016-11-4
收藏
得分:10 
1.默认初始化,money_()相当于 money_ = 0;
2.因为版主大大的using namespace std; 是写在class外啊。

版主代码好规范。
2016-11-10 15:37
快速回复:C++的运算符重载问题
数据加载中...
 
   



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

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