2016-03-22 3 views
-2

У меня есть вектор, который я хотел бы хранить в подклассах. Проблема, с которой я столкнулась, состоит в том, что она дает мне ошибку. Я посмотрел here в качестве ссылки, но теперь я получаю эту ошибку:создание вектора класса, содержащего подкласс

Error: "Subclass::Subclass" (declared at...) is inaccessible.

Мой код выглядит следующим образом:

class SuperClass 
{ 
public: 
    SuperClass() {} 
    ~SuperClass() {} 

}; 
class SubClass : public SuperClass 
{ 
    SubClass() {} //there is no .cpp 
    ~SubClass() {} 
}; 

int main() 
{ 
    std::vector<SuperClass*> superClass; 
    superClass.push_back(new SubClass()); 
    return 0; 
} 
+0

Пожалуйста, напишите ** полный, но минимальный ** пример, который читатели могут попробовать. –

+1

Это говорит о том, что диагностика компилятора «недоступна» говорит все. Конструктор недоступен, поскольку по умолчанию члены 'class' являются' private'. Поэтому либо используйте ключевое слово 'struct', либо, лучше здесь, добавьте' public: 'спецификатор доступа до определения конструктора, или, ungood, создайте класс' Program' 'friend'. –

ответ

1

Тип доступа по умолчанию для class является private. Следовательно, как конструктор, так и деструктор Subclass: private. Добавьте перед ними спецификатор доступа public.

class Subclass : public SuperClass{ 

    // Add this 
    public: 

     SubClass() {} //there is no .cpp 
     ~SubClass() {} 
    }; 
+0

Это сработало. Хорошо, я просто забыл тип доступа. –

Смежные вопросы