Помогите с наследованием объектов-функций (C++)

программирование С++ Visual studio

Код:

#include <iostream>

class AFunc
{
public:
AFunc()
{
a0_ = 0;
a1_ = 1;
n = 0;
}
virtual int operator() () const = 0;
protected:
mutable int a0_, a1_, n;
};

class NextFib: public AFunc
{
public:
virtual int operator() () const
{
int tmp = a1_;
a1_ = a0_ + a1_;
a0_ = tmp;
n++;
std::cout << n << " Fibbonacci number is " << tmp << "\n";
return tmp;
}
};

int main()
{
AFunc** func = new AFunc*[10];
func[0] = new NextFib;
for (int i = 0; i < 10; i++)
{
func[0]();
}

char c;
std::cin >> c;
}

В Visual C++ вылетает ошибка компиляции на строке func[0](); с сообщением "error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов". Помогите найти ошибку...

P.S. при создании экземпляра класса NextFib f и замене проблемной строки на f() все работает правильно

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.