Наследование шаблонных классов [дубликат]

193
18 ноября 2018, 15:50

На данный вопрос уже ответили:

  • Ошибка в иерархии классов 2 1 ответ
  • Ошибка: 'a' was not declared in this scope 2 ответа
  • Псевдонимы типов в шаблонных классах 2 ответа

Есть проблема, показывает ошибку error C2228: выражение слева от ".name" должно представлять класс, структуру или объединение. Должно вывести тип данных. Код взят с видеоурока:

https://www.youtube.com/watch?v=n6GMKC40gC0

Что не так?
#include <iostream>
using namespace std;
template<class T1>
class TypeSize
{
public:
    TypeSize(T1 value)
    {
        this->value = value;
    }
    void DataTypeSize()
    {
        cout << "value = " << sizeof(value) << endl;
    }
protected:
    T1 value;
};
template<class T1>
class TypeInfo : public TypeSize<T1> 
{
public:
    TypeInfo(T1 value) : TypeSize<T1>(value)
    {
    }
    void ShowTypeName()
    {
        cout << "Название типа " << typeid(value).name() << endl;
    }
};
int main()
{
    setlocale(LC_ALL, "rus");
    double a = 2;
    TypeInfo<double> c(a);
    c.ShowTypeName();
    c.DataTypeSize();
    return 0;
}
Answer 1
typeid(value).name();

Замените на:

typeid(T1).name() 

Или явно укажите:

   typeid(TypeSize<T1>::value).name()

P.S. Я обьяснил не так как хотел, поэтому уберу обьснения

READ ALSO
Как сложить IntPtr + int?

Как сложить IntPtr + int?

Подскажите как прибавить int к IntPtr в Cи языке?

237
C/C++, не найден &lt;gtk/gtk.h&gt;

C/C++, не найден <gtk/gtk.h>

Меня замучила следующая проблема

181
Как достать мета данные у видео файлов?

Как достать мета данные у видео файлов?

Не получается таким образом вывести когда был создан файл:

185