export اشاره گر هوشمند از کتابخانه c++ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

export اشاره گر هوشمند از کتابخانه c++

+1 امتیاز
سلام.

اگر در بخش export توابع نمونه های موجود در کتابخانه جهت صدور به صورت std::shared_ptr باشن چطور میشه همچین چیزی رو به اشاره گر تبدیل کرد و برای front-end ارسال کرد و مجدداً در صورت نیاز اشاره گر را از front-end دریافت کنیم و به اشاره گر هوشمند کستش کنیم؟
سوال شده شهریور 18, 1398  بوسیله ی ابید (امتیاز 781)   19 89 106

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

باید به صورت void* نمونه مورد نظر را کست کنید و مجدد از void* به std::shared_ptr کستش کنید به صورت زیر:

void* func1(){
   auto instance1 = std::make_shared<Foo>();
   return static_cast<void*>(instance1.get());
}


void func2(void* instance1_p){

   std::shared_ptr<Foo> instance1((Foo*)instance1_p);
}

 

پاسخ داده شده شهریور 19, 1398 بوسیله ی عباس مولایی (امتیاز 2,754)   1 5 13
انتخاب شد خرداد 25, 1399 بوسیله ی farnoosh
0 امتیاز
شما نمی تونید اشاره گر معمولی را به std::shared_ptr کست کنید برای اینکار بهتر که  اطلاعات را توی std::map  نگهداری و دوباره بهش دسترسی داشته باشید.
 
static std::map<void*,std::shared_ptr<Foo>> instances; 
void* func1(){ 
   auto instance1 = std::make_shared<Foo>(); 
   instances[instance1.get()] = instance1;
   return static_cast<void*>(instance1.get());
 } 
void func2(void* instance1_p){
   std::shared_ptr<Foo> instance1 = instances[instance1_p]; 
}

 

 

پاسخ داده شده شهریور 19, 1398 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...