我想調用一個只接受類型爲 void put_func(T *obj)
的指針的函數。我的要求是當我使用時,此功能取true/false
並返回true/false
。由於它是一個指針,我無法傳遞這些值。有什麼辦法可以達到這個目的嗎?將NULL和NON-NULL值轉換爲指針的C++
編輯: 我的基本問題是如何通過true
或false
當函數採用通用指針。
編輯2:修改了問題以說清楚。
我想調用一個只接受類型爲 void put_func(T *obj)
的指針的函數。我的要求是當我使用時,此功能取true/false
並返回true/false
。由於它是一個指針,我無法傳遞這些值。有什麼辦法可以達到這個目的嗎?將NULL和NON-NULL值轉換爲指針的C++
編輯: 我的基本問題是如何通過true
或false
當函數採用通用指針。
編輯2:修改了問題以說清楚。
鑄造0
(整型常量)到T*
是安全的,並給你一個nullptr
,但鑄造1
並不安全。但是,你能使用任意有效的指針:
void foo() {
static char dummy; // static keeps the pointer valid
put_func(nullptr);
put_func(&dummy); //not the nullptr
}
請注意,您可能還可以做
void put_bool(bool b) { put_func(new bool(b)); }
bool get_bool() { bool* p = get_func(); bool b = *p; delete p; return b; }
,但我們沒有足夠的上下文來知道這是否泄漏內存。
它看起來像你正在試圖使用你的T*
散列表模擬器來存儲bool
的集合。
您不能參照文字true
或false
。您需要管理一個bool
變量的生命週期。
template<typename T>
void put_func(T *obj) {}
int main(){
bool myBool = true;
put_func(&myBool);
}
什麼是「NOT-NULL」?你似乎假裝一個指針值是一個布爾變量。爲什麼? –
完全不清楚給我。你爲什麼傳遞'void *'?如果不瞭解'put_func'對你提供的值做了什麼,沒有辦法回答這個問題。 – Rotem
聽起來像是一個xy問題。你究竟在做什麼? – NathanOliver