为什么要创建一个只有静态和朋友方法的类?
例如:
namespace Image
{
GLuint LoadImage(std::string name);
GLuint LoadImage(std::string name, const int min, const int mag, const int wrapx, const int wrapy);
GLuint LoadImage(std::string name, unsigned int& width, unsigned int& height);
unsigned char* LoadImageData(std::string name, unsigned int& width, unsigned int& height);
class ImagePrivate
{
static ILuint DevilLoadImage(std::string name);
friend GLuint LoadImage(std::string name);
friend GLuint LoadImage(std::string name, const int min, const int mag, const int wrapx, const int wrapy);
friend GLuint LoadImage(std::string name, unsigned int& width, unsigned int& height);
friend unsigned char* LoadImageData(std::string name, unsigned int& width, unsigned int& height, unsigned int& bpp);
};
}
友元方法使用ImagePrivate :: DevilLoadImage。
如果您已经有一个命名空间(Image),为什么要创建一个类?我认为一个类用于创建对象,但在这种情况下,不会创建任何对象。
非常感谢!
答案 0 :(得分:0)
如果您已经有一个命名空间(Image),为什么要创建一个类?
看起来要使DevilLoadImage
变为私有,所以只能通过命名空间中的“公共”函数来调用它。
这是否合情合理是品味问题。替代方法是将内部函数放在“详细信息”命名空间中,将它们隐藏在源文件中(可能不是模板的选项),或者将它们作为一般用途的文档。
我认为一个类用于创建对象
这当然是最常见的用法。但它也定义了一个范围(如命名空间),并允许您指定成员的可访问性(与命名空间不同),因此可以将其用于此目的。