gpt4 book ai didi

c++ - 在不指定实例化的情况下调用类模板的静态方法的方法?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:01 25 4
gpt4 key购买 nike

有没有办法在类模板中定义一个静态方法,然后可以在不指定实例化的情况下调用它?

我认为这在您有一些辅助静态函数的情况下很有用,这些函数在逻辑上属于一个类(碰巧是一个模板类),但不依赖于模板参数。

我也不介意:

  1. 对所有人使用相同的静态方法(包括地址和全部)实例化,或
  2. 每个实例都有一个单独的静态方法,但无需调用静态方法指定我调用方法的实例化(一些默认会被调用)。

例如

template<typename T> class C {
public:
static int func() { return 0; }
};

int main()
{
// This works.
return C<int>::func();

// These don't work.
// return C<>::func();
// return C::func();
}

最佳答案

最简单的解决方案可能是让静态函数属于基类,然后模板派生自基类:

struct CBase {
static int func() { return 0; }
};

template<typename T> class C : public CBase {
public:
};

int main()
{
// This works.
return C<int>::func();

// This will work too:
return CBase::func();
}

关于c++ - 在不指定实例化的情况下调用类模板的静态方法的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42071634/

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