1

我正在编写一个 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;
};
4

1 回答 1

1

似乎最明智的做法是创建一个具有静态成员的类,然后使该类成为 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();
}
于 2013-09-08T18:17:46.727 回答