클래스는 (주로 편집 됨) 컨테이너에 대한 참조를 반환하는 함수 호출 연산자가있는 경우 :unique_ptr에서 함수 호출 연산자를 어떻게 호출합니까?
class remote {
public:
void get_version() {
auto d = ... something to generate data ...
client().push(d.begin(), d.end());
}
...
client_connection client;
};
이 client
을 경우 작동합니다 client_connection
의 멤버가
class client_connection {
public:
concurrent_queue<T>& operator()() { return client; }
concurrent_queue<T> client;
};
그리고 다른 클래스를 remote
개체의 일부로 구성됩니다. 그러나 소유권을 remote
에 unique_ptr
통해 전달하는 경우 어떻게 함수 호출 연산자를 호출합니까?
client()->push(d.begin(), d.end());
으로 호출을 변경하면 푸시가 client_connection
이 아닌 unique_ptr
에 있기 때문에 문제가 발생한다는 오류 메시지가 표시됩니다. .get()
를 사용
이제 기본 객체하지만 함수 호출 연산자없이 노력하고 있습니다 : client.get()->push(m.begin(), m.end()); // error: ‘class client_connection<unsigned char>’ has no member named ‘push’
그러나 모든 실패 함수 호출 연산자를 호출하는 다양한 조합을 시도. unique_ptr
에 포함 된 객체에서 함수 호출 연산자를 어떻게 호출합니까?
[mcve]를 입력하십시오. – Barry
일반적으로 unique_ptr-> operator() (args ...)를 사용해야합니다. – OutOfBound
@ Bryry 어떻게 전화를해야 하는지를 묻는 방법을 보여줄 수 있습니까? 관련이없는 클래스의 스크린은 독자가 문제가있는 곳을 찾아 내려고합니다. –