перегрузка оператор() через оператор[][] на c++

нужно так чтобы data[5][5] код выводил как data(5,5) и как результат выдавал произведение ixj, т.е. 5*5=25. Желательно, чтобы была имплементация классов header file примерно такой

#ifndef HEADER_H
#define HEADER_H
class Data {
 public:
 mineData();// это функция, которая должна включать перегрузку
 
 int data()( int, int );
 private:
 int data[5][5];
};
#endif

Ответы (1 шт):

Автор решения: Maxim Timakov
#include <iostream>

class Test
{
    struct Impl
    {
        int a;
        auto operator[](int b)
        {
            return a * b;
        }
    };
public:
    auto operator[](int a)
    {
        return Impl{a};
    }
};

int main()
{
    Test data;

    std::cout << data[7][6] << std::endl;

    return 0;
}

Запустить код

→ Ссылка