gpt4 book ai didi

c++ - 如何根据指针与非指针类型重载成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:39 24 4
gpt4 key购买 nike

鉴于以下情况:

template <typename T>
class Whatever
{
public:
Whatever(T &&t): _t(std::move(t)) { }

private:
T _t;
};

T 是指针类型时,我需要检查构造函数的 t arg 是否为 -1(不要问), 并在将其分配给 _t 之前将其更改为 nullptr换句话说,我需要为指针类型重载此构造函数。

有人知道这是否可行吗?

注意:即使我将类部分特化为指针类型,我也希望该类尽可能从上面的类本身继承(因为除此之外这两个类的行为是相同的),但不知道是否那是可能的。任何帮助,将不胜感激。谢谢。

最佳答案

您可以使用标记分派(dispatch)和委派构造函数:

#include <type_traits>

template <typename T>
class Whatever
{
public:
Whatever(T&& t)
: Whatever(std::move(t), std::is_pointer<T>{})
{
}

private:
Whatever(T&& t, std::true_type)
: _t(/*initialize _t as a pointer*/)
{
}

Whatever(T&& t, std::false_type)
: _t(/*initialize _t as a non-pointer*/)
{
}

T _t;
};

关于c++ - 如何根据指针与非指针类型重载成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32680417/

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