그러나 Helper
의 Helper
클래스의 친구가되지 무엇입니까?
#include <iostream>
using namespace std;
template<typename Fun, typename Arg>
class TestBuilder
{
int n;
char c;
public:
template<typename Int>
class Helper
{
public:
void print(TestBuilder& tb) {
std::cout << tb.n << " " << tb.c << std::endl;
}
};
TestBuilder(int n, char c) : n(n), c(c) {}
};
int main() {
TestBuilder<int, int> tb(5, 'p');
TestBuilder<int, int>::Helper<int> h;
h.print(tb);
return 0;
}
를 출력 :
C02QT2UBFVH6-lm:~ gsamaras$ pico main.cpp
C02QT2UBFVH6-lm:~ gsamaras$ g++ -Wall main.cpp
C02QT2UBFVH6-lm:~ gsamaras$ ./a.out
5 p
:) 결과
, 그것은, 예를 확인 외부 클래스의 멤버 (예, 및 개인 부재)에 액세스 할 다른 클래스 (안 중첩 한, 또 다른 클래스)를 추가하면
그러나, 자신을 위해 참조 TestBuilder
의 개인 회원 (! 물론) 액세스 할 수 없습니다 :
class alienClass
{
public:
/*
That won't work, you will get:
error: 'n' is a private member of 'TestBuilder<int, int>'
error: 'c' is a private member of 'TestBuilder<int, int>'
*/
void print(TestBuilder<int, int>& tb) {
std::cout << tb.n << " " << tb.c << std::endl;
}
};
도우미는 TestBuilder 내에 중첩되어 있으며, TestBuilder 개체의 모든 private 멤버에 대한 모든 권한을 이미 갖습니다. – Davidbrcz