C ++ Проверка типа переменной экземпляра шаблонаC++

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

Сообщение Anonymous »

У меня есть вариант использования, аналогичный этому вопросу < /p>
Я хочу проверить, какой тип переменной экземпляра хранится в параметре без исключения исключения < /p>
class ParameterBase
{
public:
virtual ~ParameterBase() {}
template const T& get() const; //to be implemented after Parameter
template void setValue(const U& rhs); //to be implemented after Parameter
};

template
class Parameter : public ParameterBase
{
public:
Parameter(const T& rhs) :value(rhs) {}
const T& get() const {return value;}
void setValue(const T& rhs) {value=rhs;}
private:
T value;
};

//Here's the trick: dynamic_cast rather than virtual
template const T& ParameterBase::get() const
{ return dynamic_cast(*this).get(); }
template void ParameterBase::setValue(const U& rhs)
{ return dynamic_cast
&>(*this).setValue(rhs); }

class Diagram
{
public:
ParameterBase* v;
int type;
};
< /code>
То, что я хочу сделать, это что -то вроде этого < /p>
if (diagram.getParameter().type == int) {
}
< /code>
Как я могу изменить эту реализацию, чтобы она позволила мне посмотреть, какой тип параметра держит. Все, что мне нужно, это переменная экземпляра класса, которая может быть из нескольких типов (ограниченных), и при чтении ее проверьте, какой тип это


Подробнее здесь: https://stackoverflow.com/questions/640 ... e-variable
Ответить

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

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

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

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

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