Спецификатор доступа, не способный вызвать функцию, определенную в производном классе

Я попытался узнать о спецификаторе доступа в С++, поэтому я получил доступ к общедоступному и защищенному члену из базового класса и выполнил функцию добавления в производном классе, как показано ниже,

#include<iostream>
using namespace std;

class Base
{
    public:
        int a;
    protected:
        int b;
};

class Derived : public Base
{
    public:
        int sum;
        void add()
        {   
            a = 10;
            b = 20;
            sum = a + b;
        }
};


int main()
{
    Derived Obj;
    Obj.add;
    cout << "The sum : " << Obj.sum << "\n";
    return 0;
}   

Но во время компиляции я получаю следующее сообщение об ошибке: «оператор не может разрешить адрес функции перегрузки». Кто-нибудь может объяснить, в чем ошибка?

заранее спасибо


person Jayakumar    schedule 14.11.2018    source источник
comment
Что означает Obj.add;? Это недопустимый оператор в C++. Это то, что компилятор говорит вам. Функции в C++ вызываются через оператор (). Если вы хотите вызвать функцию, то где ваш оператор ()?   -  person AnT    schedule 14.11.2018


Ответы (1)


В вызове функции отсутствуют скобки в следующей строке:

Obj.add;

Должно быть: Obj.add();

person P.W    schedule 14.11.2018