我试图调用一个只接受该类型指针的函数
void put_func(T *obj)
。我的要求是,当我使用true/false
时,此功能需要true/false
并返回get_func()
。由于它是一个指针,我无法传递这些值。有没有办法实现这个目标?
编辑:
我的基本问题是当函数采用泛型指针时如何传递true
或false
。
编辑2:修改问题以明确说明。
答案 0 :(得分:1)
您似乎正在尝试使用T*
哈希表模拟器来存储bool
的集合。
您无法引用文字true
或false
。您需要管理bool
变量的生命周期。
template<typename T>
void put_func(T *obj) {}
int main(){
bool myBool = true;
put_func(&myBool);
}
答案 1 :(得分:0)
将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; }
但是我们没有足够的上下文来知道这是否会泄漏内存。