vc 6.0中的友元函数是怎么回事啊

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:08:44
本人在vc6.0中写了个矩阵运算的类,涉及到操作符重载,就申明为友元了。我把using namespace std删了,把include<iostream>改成了include<iostream.h>,可还是不行,连一些基本的符号也不能识别,错误一大堆,都是 error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const int' (or there is no acceptable conversion)之类的错误。把using namespace std加上就只有一个错误了,那就是认不到友元。
你没有看懂我的题啊,先我没有加using namespace std;的

错误原因:
这不是代码问题,而是VC++6.0的一个小BUG,是using namespace std;
解决方法:
方法一:去掉using namespace std;改成较小的名字空间。比如有#include <string> 则使用using std::string
有#include <iostream> 则使用using std::cout,using std::cin等等。其他的标准头文件以此类推。
方法二:友元函数的定义直接在类里面写
方法三:换一种编译器
其中个人觉得用方法一修改较为好,这样逻辑也很清楚。
上面的代码主要修改类中的名字空间就行了,修改后代码:
#pragma once
#include <string>
#include <iostream>
using std::cout;
using std::ostream;
using std::string;

你把include<iostream.h>改为include"iostream.h"但是using namespace std这个要去掉,试试看看,你自己写的友元就得用include"iostream.h"。