gpt4 book ai didi

C++ 模板:如何通过 std::is_pointer 有条件地删除值

转载 作者:太空狗 更新时间:2023-10-29 23:50:45 25 4
gpt4 key购买 nike

在我做的一般容器的析构函数中,如果元素是指针,我会尝试删除它们,所以我在下面尝试了。但是当我使用 T=double 进行测试时,编译器显示错误消息,指出 delete 后必须跟有指针。我怎样才能正确地做到这一点?

template<class T> static void deleteIfPointer(T t)
{

if(std::is_pointer<T>::value)
{
std::cout << "is pointer" << std::endl;
delete t;
}
else
std::cout << "not pointer" << std::endl;

}

最佳答案

template <class T>
static void deleteIfPointer(const T& t)
{
std::cout << "not pointer" << std::endl;
}

template <class T>
static void deleteIfPointer(T* t)
// ^
{
std::cout << "is pointer" << std::endl;
delete t;
}

关于C++ 模板:如何通过 std::is_pointer 有条件地删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com