Возвращение члена из структуры без .get () - PullRequest
0 голосов
/ 01 апреля 2020

Допустим, у меня есть следующая структура

template<typenameT>
class Foo
{
  T value;
  public:
    // some public logic
}

все, что я хочу в этой точке, это возможность сказать

Foo<int> A;

и затем получить значение из A, как будто он использует "просто значение типа T" и использует его следующим образом

int val1 = A;  // must correspond to int val1 = A.value
               // and
int& val2 = A; // must return reference of A.value and so on

Я действительно не хочу, чтобы пользователь устанавливал / получал, потому что я собираюсь писать такие вызовы очень часто и хочу для этого упростить код как можно больше.

Сначала я подумал, что перегрузка = может помочь, но я не понял это правильно. Это работает наоборот с оператором присваивания, таким как Foo<int> A; int val = 1; A = val;

РЕДАКТИРОВАТЬ: В Интернете уже есть ответ, но я не смог найти его под ключевым словом "присваивание".

1 Ответ

5 голосов
/ 01 апреля 2020

кажется, что вы хотите перегрузить пользовательское преобразование операторы:

template <typename T>
class Foo
{
  T value;
public:
    operator T () const { return value; }
    operator T& () { return value; }

    // some public logic
};
...