2014-11-13 3 views
0

이 문제에 대한 해결책을 찾으려고했지만 아무 것도 찾을 수 없었습니다. 내가 그것을 사용하고자하는 테스트에서키워드를 사용하여 공용으로 보호 된 오버로드 된 메서드

class FakeClass : public MyClass 
{ 
    public: 
    using MyClass::MyClass; 
}; 

:

FakeClass myFake(std::shared_ptr<X>(new X)); 

을하지만, g는 ++ 말한다 : 단위 테스트에서

class X; 
class MyClass 
{ 
    public: 
    MyClass(); 

    protected: 
    // ctor for unit test 
    MyClass(std::shared_ptr<X> p_x); 
}; 

: 이 내 클래스입니다

MyClass :: MyClass (std :: shared_ptr)가 보호되어 있습니다.

정확한 사용 방법을 어떻게 지정할 수 있습니까?

답변

1

FakeClassMyClass 생성자를 사용할 수 있지만 어디에서든지 FakeClass을 만들 수없는 경우 친구 또는 파생 유형이 아닙니다.

당신은 publicFakeClass 생성자를 작성해야하고, 그이 MyClass 보호 생성자 호출 무슨 수 있습니다

FakeClass(std::shared_ptr<X> p) 
: MyClass(p) 
{ } 
관련 문제