У меня есть следующая переменная, с которой мне нужно работать, и я должен написать свою собственную обертку вокруг нее для назначения.Я перехожу за пределы назначения (поскольку мне придется использовать эту оболочку, которую я создаю) и хочу перегрузить оператор индекса в моей оболочке, чтобы использовать его с массивом двойных указателей.В коде я имею в виду следующее:
Что у меня есть:
Из данного заголовка для библиотеки:
typedef struct { // A pixel stores 3 bytes of data:
byte red; // intensity of the red component
byte green; // intensity of the green component
byte blue; // intensity of the blue component
} pixel;
typedef struct {
int rows, cols; /* pic size */
pixel **pixels; /* image data */
} image;
Мой класс (конечно, включенный в заголовок):
pixels& MyWrapper::operator[] (const int nIndex) {
return Image.pixels[nIndex]; // where Image is of type image
}
Конечно, это не сработает, поскольку двойной указатель возвращает указатель, который я не советую возвращать, но возвращаю * пиксели и тоже не возвращает.Просто чтобы удовлетворить мое любопытство и помочь мне понять, почему это невозможно, кто-то может сказать мне, как это будет реализовано, если это вообще возможно, и почему это так?Имейте в виду, я пока не очень хорошо понимаю указатели (я знаю основы того, как они работают, но это так), и я надеюсь использовать это, чтобы значительно расширить мое понимание.