gpt4 book ai didi

c++ - 可以在没有模板参数的情况下使用模板类的静态类函数吗?

转载 作者:太空狗 更新时间:2023-10-29 23:31:02 25 4
gpt4 key购买 nike

我有一个模板类,其中包含一个不依赖于模板参数的静态函数。然而,编译器似乎在我使用该函数时强制我指定一个类型名。

template <typename T>
class MyClass {
...
static void function();
};

template <typename T>
void MyClass<T>::function() {
....
}

这个函数可以用作:

MyClass<int>::function();

但是“int”只是为了满足编译器的需要。它没有任何意义,可以用任何其他类型代替,这不会增加代码的可读性。我想做一些类似的事情

MyClass<>::function();

甚至

MyClass::function();

但是编译器不允许。我意识到这是因为在头文件中我已明确将函数标记为模板化,但是当我从头文件中删除“< T >”时它也不会编译。

正确的做法是什么?

最佳答案

类型很重要!

模板可以专门化,因此:

template <typename T>
class MyClass {
public:
static void function() { std::cout << "Hello, World!\n"; }
};


template <>
class MyClass<City> {
public:
static void function() { launchRockets(); }
};

是一个可行的程序。

如果您随后编写 MyClass::function(),它应该消灭 Bagdad 还是打印一条友好消息?


当然,如果这个函数没有理由做除打印之外的任何其他事情,那么它或许应该是一个独立的函数:

void function() { std::cout << "Hello, World!\n"; }

它是由 function() 调用的,嘿,它甚至更短,因为没有类!

关于c++ - 可以在没有模板参数的情况下使用模板类的静态类函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10624457/

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