今日報錯系列:void * 類型的函數形參,該如何使用

今日在搞一個問題時,用到了void * 類型,在此記錄一下ios

問題大體描述:以void * 類型爲參數的函數應該怎麼使用ide

void Problem(void*  user_data);

今日報錯系列:void * 類型的函數形參,該如何使用
如下以傳共享指針爲例:代碼很簡單,耐心看完。
注意兩點:下面代碼的兩個長註釋函數

#include <iostream>
using namespace std;
class StopMyDate {
public:
    string aaa;
    string bbb;
    string ccc;
};

void sss(void*  user_data)
{
    // 注意該處:相似於 *((int*)user_data)   /***************注意1*************/
    auto m_user_data = *((shared_ptr<StopMyDate>*)user_data);
    string aa = m_user_data->aaa;
    cout << "m_user_data->aaa : " << aa.c_str() << endl; //測試是否正確
}

int main()
{
    shared_ptr<StopMyDate>stopMyDate(new StopMyDate); // 定義一個共享指針,類型stopMyDate
    // 給成員賦值
    stopMyDate->aaa = "aaaaa";
    stopMyDate->bbb = "bbbbb";
    stopMyDate->ccc = "ccccc";

    // 此處調用,需注意添加(void*)  /***************注意2*************/
    sss((void *)&stopMyDate);
    return 0;
}

輸出:測試

m_user_data->aaa : aaaaa
相關文章
相關標籤/搜索