typedef
으로 특정 유형을 캡슐화하는 것에 대해 빠른 질문이 있습니다. typedef를 사용하여 특정 유형을 완전히 숨기는 방법은 무엇입니까?
class Foo {
public:
typedef boost::shared_ptr< std::vector<int> > value_type;
Foo(value_type val) : val_(val) {}
private:
value_type val_;
};
그러나이 경우
는, 주요 기능은 여전히 (유형을 알고있다 그래서 명시 적으로 사용하고 : 나는 누구의 생성자 특정 값을 사용하는 클래스Foo
을 가지고,하지만 난
typedef
를 사용하여 특정 유형을 숨기려면 말
std::vector<int>
는) :
int main() {
Foo::value_type val(new std::vector<int>());
val->push_back(123);
Foo foo(val);
return 0;
}
어떻게 해결할 수 여전히
Foo
생성자에서 벡터의 깊은 사본을 피하면서?
감사합니다. 특히 'swap()'연산이 꼭 필요한 것입니다. – Frank