簡體   English   中英

將Void作為函數參數傳遞

[英]Pass Void as Function Parameter

我有一個函數應該接受任何類型的參數。 因此我使用模板。

template <typename T>
void Function(T Parameter);

該函數的作用是調用函數。 在我的實際應用程序中,有一個帶字符串鍵的回調映射,但這與此問題無關。 回調必須是函數指針,返回類型為void,但任何參數類型。

void* Callback;

template <typename T>
void Function(T Parameter)
{
    (function<void(T))Callback(Parameter);
}

假設回調是正確的類型,這應該像下面這樣工作。

Function<int>(42);

// should result in...
(function<void(int))Callback(42);

但在某些情況下,我想傳遞void作為參數。

Function<void>(void);

// should result in...
(function<void(void)>Callback(void);

如您所見,我需要提供任何內容或void作為參數。 但我不能傳遞void作為參數,有一個錯誤,類型名稱將是不正確的。

如何將void作為函數參數傳遞?

為什么不指定非模板重載?

void* Callback;

template <typename T>
void Function(T Parameter)
{
    (function<void(T)>)Callback(Parameter);
}

void Function()
{
    (function<void()>)Callback();
}

暫無
暫無

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

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