抽出演算子の再ロードについて
952 ワード
今日は以下のコード(キーコードフラグメントのみ表示)が作成され、VS 2015で正常に動作していますが、VC 6.0でエラーメッセージが表示されます.
ここでは、ストリームオブジェクトcoutを出力するための抽出演算子'<を再ロードします.
error C2593: 'operator <
Friend関数が定義されているにもかかわらず、プライベートメンバー変数にアクセスできないという問題が発生しました.
error C2248: 'x' : cannot access private member declared in class 'vct'
error C2248: 'y' : cannot access private member declared in class 'vct'
解決策は、クラス定義の前にクラスを宣言し、メンバー関数ではないため、友元関数の関数ヘッダを前に配置することです.これは合理的です.
#include
using namespace std;
class vct
{
private:
double x, y;
public:
//vct(double X = 0, double Y = 0) { x = X, y = Y; }
//~vct() {}
//void set(double X = 0, double Y = 0) { x = X, y = Y; }
//vct operator+(vct& rival);
//vct operator-(vct& rival);
friend ostream& operator<
ここでは、ストリームオブジェクトcoutを出力するための抽出演算子'<を再ロードします.
error C2593: 'operator <
Friend関数が定義されているにもかかわらず、プライベートメンバー変数にアクセスできないという問題が発生しました.
error C2248: 'x' : cannot access private member declared in class 'vct'
error C2248: 'y' : cannot access private member declared in class 'vct'
解決策は、クラス定義の前にクラスを宣言し、メンバー関数ではないため、友元関数の関数ヘッダを前に配置することです.これは合理的です.
#include
using namespace std;
class vct; //
ostream& operator<