Разве C ++ IDE Netbeans или Eclipse не поддерживают наследование классов? - PullRequest
2 голосов
/ 22 июня 2010

Я использую среду IDE NetBeans 6.8 для создания проекта C ++. Хотя я использую наследование классов, мне кажется, что он не распознает производный класс. Вот что у меня есть:

class A
{
public:
    A(vector<double> a, double b) {...}
};

class B : public A
{
public:
    additionalfunction(...) {...}
};

main()
{
    vector<double> c = something;
    double d = 0;
    B b=B(c, d);
}

И компилятор говорит мне, что "B (c, d)" не объявлено. Я попробовал Eclipse C ++, он сказал мне то же самое. Это почему? Это потому, что обе IDE не поддерживают наследование C ++? Что я должен делать?

Любой ответ приветствуется.

Ответы [ 3 ]

4 голосов
/ 22 июня 2010

Подклассы не наследуют конструкторы. Вы пытаетесь вызвать B (двойной, двойной), но нет B (двойной, двойной). Вы можете определить B (double, double) или использовать этот шаблон из C ++ FAQ.

4 голосов
/ 22 июня 2010

В C ++ конструкторы (и деструкторы) не наследуются как обычные методы.Вам нужно определить B (вектор, двойной).Однако вы можете выполнить своего рода вызов родительского конструктора в списке инициализации:

public:
    B(vector<double> a, double b) : A(a, b){
        ...
    }
1 голос
/ 22 июня 2010

Я бы предложил реализовать конструктор в классе B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...