前提・実現したいこと
他のテンプレート型のprivateなメンバ関数にアクセスしたいです.
Visual C++ではfriend class Foo;
を追加することで希望の動作を実現できました.
しかし,gccではコンパイルすることができません.
gccでこれを実現する方法が知りたいです.
よろしくお願いします.
発生している問題・エラーメッセージ
prog.cc:12:19: error: 'void Foo<_Ty>::private_func() [with _Ty = double]' is private within this context 12 | foo.private_func(); | ~~~~~~~~~~~~~~~~^~
該当のソースコード
C++
1#include <iostream> 2template<class T> 3class Foo { 4private: 5 friend class Foo; 6 void private_func() { 7 std::cout << "private_func" << std::endl; 8 } 9public: 10 void public_func() { 11 Foo<double> foo; 12 foo.private_func(); 13 } 14}; 15int main() { 16 Foo<int> foo; 17 foo.public_func(); 18 // foo.private_func(); -> error 19 return 0; 20}
補足情報(FW/ツールのバージョンなど)
C++11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。