C ++将NULL和NON-NULL值转换为指针

时间:2016-05-31 13:07:40

标签: c++

我试图调用一个只接受该类型指针的函数 void put_func(T *obj)。我的要求是,当我使用true/false时,此功能需要true/false并返回get_func()。由于它是一个指针,我无法传递这些值。有没有办法实现这个目标?

编辑: 我的基本问题是当函数采用泛型指针时如何传递truefalse

编辑2:修改问题以明确说明。

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试使用T*哈希表模拟器来存储bool的集合。

您无法引用文字truefalse。您需要管理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; }

但是我们没有足够的上下文来知道这是否会泄漏内存。