gpt4 book ai didi

c++ - 为什么没有 'this_class' - 'this' 的静态等价物?

转载 作者:太空狗 更新时间:2023-10-29 22:59:28 26 4
gpt4 key购买 nike

当您在 C++ 非静态方法中时,您可以使用 this 变量来引用当前实例;通过实例你也有类型。在静态方法中,我希望有类似 this_class 类型的东西可供我使用,这是我在其中实现该方法的类的类型。即使它不是继承的(即对于 class B : public A,方法 A::foo() 也会让 this_class 成为 A 即使通过 B) 访问 - 它仍然有用,例如,当您在具有许多模板参数的类中实现静态方法时,并且您想要调用一些 out-以您的类类型为模板的类函数。

使用说明:

template <typename T> void foo() { std::cout << typeid(T).name(); }

template <typename S, typename T, typename U, typename AndLots, typename More>
class A {
/* ... */
static void say_my_name( foo<this_class>(); }
}

那么,是否考虑过这种可能性?是否有理由使开发人员或编译器的事情变得复杂?

最佳答案

How come there's no 'this_class' - the static equivalent of 'this'?

你不需要它,因为它微不足道。

你可以写

template <typename S, typename T, typename U, typename AndLots, typename More>
class A {
public:
/* ... */
static void say_my_name() { foo<A>(); }
// ^^^
};

Demo

template <typename S, typename T, typename U, typename AndLots, typename More>
class A {
public:
/* ... */
typedef A<S,T,U,AndLots,More> this_type;

static void say_my_name() { foo<this_type>(); }
};

Demo

如果你愿意的话。

关于c++ - 为什么没有 'this_class' - 'this' 的静态等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808269/

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