Создать оператор присваивания в шаблонном базовом классеC++

Программы на C++. Форум разработчиков
Anonymous
Создать оператор присваивания в шаблонном базовом классе

Сообщение Anonymous »

У меня есть шаблонный базовый класс, который выглядит следующим образом:

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

enum class PushConstantType { vec1, vec2, vec4 };

template
struct PushConstant
{
PushConstant& operator=(const T& value)
{
Value = static_cast(value);
return *this;
}

T Value {};
};
И унаследованный класс, который я пытаюсь сделать очень простым:

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

struct PushConstant_Vec1 : public PushConstant {};
Но каждый раз, когда я пытаюсь использовать этот оператор присваивания, что-то идет не так, например. PushConstant_Vec1 v = 4.5f; выдает следующую ошибку:

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

PushConstant_Vec1::PushConstant_Vec1': no overloaded function could convert all the argument types
PushConstant_Vec1::PushConstant_Vec1(const PushConstant_Vec1 &)': cannot convert argument 1 from 'float' to 'const PushConstant_Vec1 &'
Conversion requires a second user-defined-conversion operator or constructor
Все примеры, которые мне удалось найти в Интернете, предполагают именно этот синтаксис, поэтому я склонен полагать, что именно наследование может сбить с толку компилятор.
Можно ли это сделать, определяя шаблонный оператор присваивания в базовом классе?>

Подробнее здесь: https://stackoverflow.com/questions/799 ... base-class

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