我在头文件中有两个模板函数,generatePerms
和permute
(不是针对类,只是带有实用程序类型函数的通用头文件)。我希望 generatePerms
可以公开访问,但 permute
不应该。有什么办法可以做到这一点吗?我不认为我可以在类之外使用 public:
和 private
,但也许有一种方法可以构建可以实现此目的的头文件?
头文件示例:
//header.hpp
#ifndef H_UTILITY
#define H_UTILITY
#include <vector>
//this one should be private
template <typename T>
void permute( std::vector<T> values, int n, std::vector<T> *perms ){ /* do stuff */ }
//this one should be public
template <typename T>
std::vector<T> generatePerms( std::vector<T> values, int n ){ /* do stuff, calls permute() */ }
#endif
最佳答案
您可以将函数作为静态函数放入 Util 类中,如下所示
//header.hpp
#ifndef _H_UTIL_
#define _H_UTIL_
#include <vector>
class Util
{
private:
template <typename T>
static void permute( std::vector<T> values, int n, std::vector<T> *perms ){ /* do stuff */ }
public:
template <typename T>
static std::vector<T> generatePerms( std::vector<T> values, int n ){ /* do stuff, calls permute() */ }
};
#endif
并使用公共(public)函数
Util::generatePerms(...)
。
(如果您不想编写 Util::generatePerms(...) 您可以将其包装在全局函数中,但我不推荐这样做。)
关于c++ - 我可以在类之外定义私有(private)模板函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31456377/