Создать оператор присваивания в шаблонном базовом классе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
Ответить

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

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

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

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

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