みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++ の フレンドクラスについての疑問

vc++でプログラムを作っています。
クラスのアクセス制限の部分で疑問が出てきたので、ソースとその疑問について
下記に示しています。

const int CAMERA_NUMBER = 0

class CalculateMatrix{
public:
□static bool computeFundamentalMatrix( const cv::Mat P1 , const cv::Mat P2 ,
const cv::Mat T1 , const cv::Mat T2 , cv::Mat &F );
};

class ReferenceCameras{
□friend class CalculateMatrix;
public:
□ReferenceCameras();
□void setP();
□void setC();
□void setSilhouette();
private:
□cv::Mat ShilhouetteImage;
□int index;
□cv::Mat P;
□cv::Mat C;
□cv::Mat F;
};

void main(){
□ReferenceCameras camera0; //この宣言でプライベートメンバのF以外に全て値が入ります
□ReferenceCameras camera1;  //               〃
□CalculateMatrix::computeFundamentalMatrix( cameras0.P, cameras1.P , cameras0.C , cameras1.C , cameras1.F );


}

という感じで ReferenceCameras型の camera0,camera1を作って
そのCalculateMatrix::computeFundamentalMatrixの計算を行い。
camera1のFを計算する。

というのをやりたいのですが、main内のCalculateMatrix:FundamentalMatrixに引数を入れる部分でエラーが出ていてprivateメンバにアクセスできませんと出ます。

普通なら private で宣言しているので、そういうエラーが出るのは当然かと思いますが、
フレンドクラスの設定をしているのに、このエラーが出るのが理解できません。

結構調べたんですが、フレンドクラス、フレンド関数の部分と静的関数、ユーティリティ関数について絡めて解説しているのはなかったので詰まっています。

どうかみなさんの力を貸してください。

p.s. 何をやりたいのかわからん。や、定義書いてないやん。などの誹謗中傷はおやめください。心が傷つきます。

投稿日時 - 2010-11-28 16:49:19

QNo.6349590

すぐに回答ほしいです

質問者が選んだベストアンサー

main 関数から ReferenceCameras の private メンバにアクセスしようとしているわけですから,当然ですよね。

この場合,CalculateMatrix が friend かどうかは関係ありません。

投稿日時 - 2010-11-28 16:57:20

補足

なるほど、おっしゃるとおりです。

わざわざすみませんでした。

投稿日時 - 2010-11-28 17:51:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問