जब मैं वापसी प्रकार के रूप में एक unique_ptr उपयोग करते हैं, मैं संकलक त्रुटि C2280 प्राप्त करते हैं:क्या मैं सी ++ एक्टर फ्रेमवर्क में संदेश वापसी प्रकार के रूप में सी ++ 11 स्मार्ट पॉइंटर्स का उपयोग कर सकता हूं?
#include <iostream>
#include "caf/all.hpp"
using namespace caf;
using namespace std;
class A
{
public:
int a;
A(int a)
{
this->a = a;
}
};
using a_type = typed_actor<replies_to<int>::with<unique_ptr<A>>>;
a_type::behavior_type a_behavior(a_type::pointer self)
{
return
{
[self](const int& a) -> unique_ptr<A>
{
return make_unique<A>(5);
}
};
}
void tester(event_based_actor* self, const a_type& testee)
{
self->link_to(testee);
// will be invoked if we receive an unexpected response message
self->on_sync_failure(
[=]
{
aout(self) << "AUT (actor under test) failed" << endl;
self->quit(exit_reason::user_shutdown);
});
self->sync_send(testee, 5).then(
[=](unique_ptr<A> a)
{
if(a->a == 5)
{
aout(self) << "AUT success" << endl;
}
self->send_exit(testee, exit_reason::user_shutdown);
}
);
}
:
'caf::detail::tuple_vals<std::unique_ptr<A,std::default_delete<_Ty>>>::tuple_vals(const caf::detail::tuple_vals<std::unique_ptr<_Ty,std::default_delete<_Ty>>> &)': attempting to reference a deleted function include\caf\detail\tuple_vals.hpp 102
यहाँ कुछ उदाहरण कोड कि इस मुद्दे (सी ++ अभिनेता फ्रेमवर्क उदाहरणों में से एक से संशोधित) दिखाता है
संदेशों में सभी प्रकार नियमित होना चाहिए, यानी, मूल्य अर्थशास्त्र है। रनटाइम केवल प्रतिलिपि बनाता है जब * एक संदेश को अलग करता है, जो किसी संदेश मान पर गैर-कॉन्स्ट पहुंच प्राप्त करने का प्रयास करते समय संदर्भ संख्या के साथ 1. – mavam
@MatthiasVallentin अगर मैं समझता हूं कि आप क्या कह रहे हैं, तो मेरा नीचे का जवाब गलत है (यह संकलन करने के लिए होता है)। यदि आप अपनी टिप्पणी को उत्तर में बढ़ाते हैं, तो मैं खुशी से इसे स्वीकार करूंगा! –