Как передать параметр по ссылке на функцию-член класса шаблона? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть шаблон класса с конструктором, который принимает параметр в качестве ссылки.Я ищу способ передать переменную в функцию вызывающего.

template <typename T>
class Data : public ParentClass
{
    T m_data;
public:
    Data(T & data);
    T data() const;
};

template <typename T>
Data<T>::Data(T & data) : m_data(data)
{}

template <typename T>
T Data<T>::data() const
{
    return m_data;
}

int main()
{
    Data<bool> * d = new Data<bool>(true);
    std::cout << d->data() << std::endl;
}

Ошибка : нет экземпляра конструктора "Data :: Data [с T = bool] "соответствует списку аргументов. Типы аргументов: (bool)

1 Ответ

0 голосов
/ 30 мая 2018

Нельзя связать r-значение (т. Е. true) с неконстантной lvalue-ссылкой (т. Е. bool&).Например, вы не можете выполнить bool& b = true;.

. Чтобы решить проблему, вы можете изменить тип параметра на T или const T&.

.
...