簡體   English   中英

創建一個指向以結構為參數的成員函數的指針

[英]Create a pointer that points to a member function that takes a struct as an argument

我有 main.cpp 文件,我在其中定義了一個結構:

struct values {
        string name1;
        string name2;
        int key ;
        
    } a;

在頭文件 Encrypt.h 和一個文件 Encrypt.cpp 中定義了一個名為Encrypt的類,我在其中定義了我的函數...我試圖創建一個指針,該指針指向一個具有結構類型作為參數的函數,我是這樣做的:在我的頭文件Encrypt.h


#ifndef Encrypt_h
#define Encrypt_h
#include<iostream>
using namespace std;
class Encrypt {
public:
    void print(void *);
};
#endif /* Encrypt_h */

在我的Encrypt.cpp中:

void Encrypt::print(void * args)
{
    struct values *a = args;
     string name= a.name1;

    cout<<"I'm"<<name<<endl;

};

這是我嘗試在main.cpp中創建指針的方法

   void (Encrypt::* pointer_to_print) (void * args) = &Encrypt::print;

我得到的錯誤:

“不能用'void *'類型的左值初始化'struct values *'類型的變量”在Encrypt.cpp

該行:

 struct values *a = args; 

評論

我這樣做是因為我想將一個具有超過 2 個參數的函數傳遞給函數: pthread_create()所以我的函數 print 只是我簡化的示例。

問題是argsvoid*類型,而avalues*類型,所以你會得到上面提到的錯誤。

要解決此問題,如果您確定允許強制轉換,您可以使用static_castargs轉換為values*

values *a = static_cast<values*>(args);

另外將a.name1更改為a->name1

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM