2012-12-12 1 views
0

저는 "msgpack"을 처음 사용합니다.msgpack : 클래스를 멤버 함수로 묶으십시오.

MyClass::Pack() 
{ 
    msgpack::sbuffer sbuf; 
    msgpack::pack(sbuf, this); 
} 

그러나 컴파일러 (VC 9.0) 나

error C2228: left of '.msgpack_pack' must have class/struct/union third_party\msgpack\include\msgpack\object.hpp 218 

내가 찾은 유일한 방법을 말한다 : 나는 사용자 정의 클래스를 포장하기 위해 노력하고있어

MyClass::Pack() 
{ 
    MyClass copy(this); 
    msgpack::sbuffer sbuf; 
    msgpack::pack(sbuf, copy); 
} 

그러나 복사본을 만들고 싶지 않으면 (예 : 과도한 작업이거나 많은 추가 리소스가 필요합니까?) 나는 ctor없이 이것을 할 수 있습니까? 감사.

답변

1

호출 msgpack::pack(sbuf, this); 객체를 (this 그냥 포인터) 얻을 msgpack::pack(sbuf, *this);을 ... 그리고 나는 어쩌면 내가, 내가 잘못하지 않았다거야 ... MyClass copy(this);가 적절한 복사 생성자를 호출 모르겠어요 수 msgpack을 사용하여 아직 C++을 보았습니다. (

+0

젠장, 어떻게 이럴 수 있지. 고맙습니다. 해결책이있는 것 같습니다. – maverik

관련 문제