Вектор доступа в классе с «class [i]», как класс будет вектор - PullRequest
1 голос
/ 29 ноября 2010

Можно ли реализовать функцию для доступа к частному вектору данных foo в классе через class[i][j]? Это должно вызвать внутреннюю функцию вектора foo[i][j].

Ответы [ 2 ]

4 голосов
/ 29 ноября 2010

Простое решение состоит в том, чтобы реализовать operator[], чтобы оно "отслаивалось" только в первом измерении:

#include <cstdlib>

class MyClass
{
    std::vector<std::vector<int> > foo;

public:

    // grant write access
    std::vector<int>& operator[](size_t index)
    {
        return foo[index];
    }

    // grant read access
    const std::vector<int>& operator[](size_t index) const
    {
        return foo[index];
    }
};

Вам необходимы две перегрузки из-за правильности const.(Если вы хотите предоставить доступ только для чтения, а не для записи, вам, конечно, не нужна неконстантная версия.)

2 голосов
/ 29 ноября 2010

Вы можете перегрузить operator[], чтобы сделать это.Возможно, вы захотите взглянуть на этот FAQ , чтобы получить совет по использованию operator() вместо

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...