gpt4 book ai didi

静态成员函数中封闭类的 C++ 类型

转载 作者:IT老高 更新时间:2023-10-28 22:21:04 25 4
gpt4 key购买 nike

我认为这是完全不可能的,但如果。是否有可能在任何版本的 C++ 中以某种方式在静态成员函数中获取封闭类的类型?

class Impossible {
public:
static void Fun()
{
typedef Impossible EnclosingClass;

// now do something with EnclosingClass ...
}
}

有没有办法在函数中不写类名的情况下获取封闭类的类型(本例中为Impossible)?

我之所以这样做是为了避免在函数中重复类名。如果发生这种情况,很容易导致难以找到复制粘贴错误:

class SomeOther { // another class, with the same interface as Impossible
public:
static void Fun()
{
typedef Impossible EnclosingClass;
// whoops, copy-pasted, forgot to change "Impossible" to "SomeOther"

// now do something with EnclosingClass ...
}
}

有没有防止这种事情发生的好方法?我可以想象触摸在封闭类中声明为私有(private)的东西,但这将迫使我编写额外的代码(因为我当前的设计不包含任何固有的私有(private)成员,所有都是公共(public)的)。

最佳答案

问题在于 C++ 缺少 self 关键字。

我通常写:

struct Foo
{
typedef Foo self;

static void bar()
{
self* ptr = nullptr;
}
};

我知道你仍然必须确保 typedef 是正确的,但至少这样你可以将它放在你会注意到的类型定义的顶部。

不过,对于骇客,you can make this entirely autonomous .

关于静态成员函数中封闭类的 C++ 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143275/

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