最近寫程序時候遇到了一個問題,上網查了之後發現這是vc6.0的bug。
繼上次發現getline有bug以來,這是第二次了。頓時讓我想起某人說的“珍惜生命,遠離VC6”,這句話太對了
廢話不多說,問題如下代碼所示:
這個是重載類對象的<< 操作符時遇到問題。在程序中可以看到,在類的友元函數中我訪問了一個類A的私有成員m。
這原本是沒錯的,類的友元函數是可以訪問該類的私有成員的,但是這裏確報錯了。錯誤提示如下:
cpp(17) : error C2248: 'm' : cannot access private member declared in class 'A'
cpp(13) : see declaration of 'm'
cpp(23) : error C2593: 'operator <<' is ambiguous
提示不能訪問A的私有成員,此時再看下頭文件裏
#include <iostream>
using namespace std;
解決這個bug有幾個方法:
第一:把它改成#include <iostream.h>後再編譯就一切正常,可以輸出m的值2.
第二:如果你非要用#include <iostream> using namespace std;那也行,只要把該友元函數直接定義在類的內部
還有其他的方法,這裏不說了。
最後還是得說一句“珍惜生命,遠離vc6"