类和许多可以访问其私有数据的函数

Class and a lot of functions that can access it's private data

本文关键字:数据 函数 许多可 访问      更新时间:2023-10-16

我正在编写一个C++程序,该程序读取.bmp文件并创建一个表示图像的动态2D像素数组[1]。该信息存储在类 Image[2] 实例中。

因此,我希望

具有将一些颜色效果应用于图像的函数,但我希望只有这些函数能够访问 Image 的私有变量。

Image 类

必须能够在没有颜色效果的情况下工作,因此它们不能是类的函数(内联),但 Image 类也没有任何 getter 或 setter。我想到了一个朋友函数,但这意味着我必须手动列出每个函数。如果有人能帮助我解决问题,我将不胜感激!

[1]

struct Pixel
{
    unsigned char Red;
    unsigned char Blue;
    unsigned char Green;
    unsigned char Unused;
};

[2]

class Image
{
public:
    Image();
    ~Image();
    bool Open(char*);
    void Close();
    bool Save();
private:
    bool good;
    Pixel** loadedImage;
    char* filePath;
};

似乎最明智的方法是创建一个具有静态成员的类,然后将该类设置为Image的友元类。因此,例如,

class Bitmap {
    ...
    friend class ImageHandler;
}
class ImageHandler {
    static void Manipulate();
}
void ImageHandler::Manipulate() {
    // now you can access all of the private vars of Pixel.
}
void Pixel::SomeFunction() {
    ImageHandler::Manipulate();
}