gpt4 book ai didi

c++ - 如何在 C++11 中使用 decltype 引用当前类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:46 28 4
gpt4 key购买 nike

当我声明一个类静态方法时,是否可以使用 decltype(或任何其他类似的样式)来引用当前类?例如,

class
AAA
{
static AAA const make();
};

我正在尝试制作这样的东西。

class
AAA
{
static decltype(*this) const make(); // Not working because there's no `this`.
};

*this 用来描述我想做什么。我想知道一些可以解析为 AAAdecltype() 表达式。

如果可能,我该怎么做?

最佳答案

在 C++1y 中你可以这样做:

class
AAA
{
public:
static auto make()
{
return AAA();
}
};

int main()
{
AAA aaa = AAA::make();
}

这在 C++11 中是不合法的,因为您需要为 make() 指定返回类型.在 C++98/03/11 中,您可以:

class
AAA
{
public:
typedef AAA Self;

static Self make()
{
return AAA();
}
};

技术含量低,但可读性强。

<aside>

您应该避免按值返回 const 限定类型。这抑制了有效的移动语义。如果你想避免分配给右值,那么创建一个用 & 限定的赋值运算符.

</aside>

关于c++ - 如何在 C++11 中使用 decltype 引用当前类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203640/

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