Я пробовал наследование в c ++ и пытался создать простой класс:
class Class
:public int
{
};
Но при попытке компиляции я получаю (Visual Studio 2013) ошибку C3770 «int» не является допустимым базовым классом. Эта ошибка также возникает с другими примитивными типами, такими как bools chars и longs.
Тем не менее, использование пользовательского класса обертывания класса работает нормально:
template<typename T>
class Wrapper
{
T Object;
public:
operator T&(){return Object;}
};
class Class
:public Wrapper<int>
{
};
Мой вопрос заключается в том, использует ли примитивные типы непосредственно в качестве базового класса нелегальный c ++, или это сложная визуальная студия, или я просто неправильно делаю наследование; Кажется, я нигде не могу найти ответ.
В C ++ примитивные типы не являются классами. Наследование имеет дело с классами. Естественно, вы не можете наследовать примитивный тип.