Передайте ссылочный аргумент конструктору элемента контейнера STL.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Передайте ссылочный аргумент конструктору элемента контейнера STL.

Сообщение Anonymous »

Очень часто в C++ мне нужен контейнер STL типа, который имеет ссылочный элемент:

Код: Выделить всё

struct C {};

struct S
{
S() = default;

S(const C& c) : _c(c)
{}

const C& _c;   // I always have to use a pointer here
};

int main()
{
C c;
std::array arr{ c };   // Can c be passed here?

return 0;
}
Однако, поскольку ссылки должны быть установлены с самого начала, я никогда не смогу заставить это работать, и мне придется использовать указатель (что мне очень не нравится).
Вышеупомянутое не компилируется.

Код: Выделить всё

error: no matching constructor for initialization of 'S'
Можно ли передать ссылку через конструктор std::array и избежать использования указателя?

Подробнее здесь: https://stackoverflow.com/questions/783 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»