CPP 퀴즈에서 질문을 찾았습니다. 질문은C++에서 개인 중첩 클래스에 액세스하는 방법?
class secret
{
class hidden{};
public:
template <class K>
string accept(K k) {return (k(*this, hidden()));}
string keyToNextLvl (hidden)const {return ("success!"); }
};
struct SampleSoln
{
template <class pwd>
string operator()(const secret &sc, pwd opwd) const
{ return (sc.keyToNextLvl(opwd)); }
};
int main()
{
secret sc;
cout <<sc.accept(SampleSoln()) << endl; //Prints success
cout <<sc.keyToNextLvl (AnswerKey()) << endl; //Need to provide the implementation of AnswerKey
}
입니다. 이제는 "keyToNextLvl"메서드를 사용하여 직접 액세스해야합니다. (accept 메소드에 액세스 할 수 없습니다. accept 메소드를 사용하여 keyToNextLvl에 액세스하는 샘플 자체 솔루션이 제공됩니다. AnswerKey의 구현을 제공해야합니다.
일부 검색을 수행하고 몇 가지 방법이 있습니다. 친구를 사용하지 않고 비공개 멤버/방법에 액세스하십시오. http://bloglitb.blogspot.in/2010/07/access-to-private-members-thats-easy.html
하지만 위의 해결 방법에 대한 아이디어는 얻지 못했습니다. 이 기본 작도가 들어
를 구성하는 템플릿 변환 연산자를 사용? –
질문에있는 그대로 정확히 – vu1p3n0x
아, 이제 알겠습니다. 처음에 나는 당신이'operator()'를 오버로드 시켰다고 생각했지만, 이제는 변환 연산자 ('T operator()'와'operator T()'사이의 작은 차이)를 볼 수 있습니다. 산뜻한! –