개인 클래스의 친구를 정의하는 방법은 무엇입니까?개인 클래스의 친구
#include <iostream>
class Base_t{
private:
struct Priv_t{
friend std::ostream & operator<<(std::ostream &os, const Priv_t& obj);
} p;
friend std::ostream & operator<<(std::ostream &os, const Base_t& obj);
};
std::ostream & operator<<(std::ostream &os, const Base_t& obj) {
return os << "base: " << obj.p;
}
std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj) {
return os << "priv";
}
int main() {
Base_t b;
std::cout << b << std::endl;
}
오류 :
:!make t17 |& tee /tmp/vB5G5ID/54
g++ t17.cpp -o t17
t17.cpp: In function 'std::ostream& operator<<(std::ostream&, const Base_t::Priv_t&)':
t17.cpp:5:16: error: 'struct Base_t::Priv_t' is private
struct Priv_t{
^
t17.cpp:15:59: error: within this context
std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj) {
^
make: *** [t17] Error 1
shell returned 2
내가 직접 Priv_t에서 친구를 정의 할 때 의미가 있습니다
friend std::ostream & operator<<(std::ostream &os, const Priv_t& obj) { return os << "priv"; }
그 외부 클래스/구조체 정의를 수행하는 방법?
행 번호가없는 코드의 다음 게시물을 작성하십시오. –
@ DieterLücking done. – name