Странная ошибка c2660 "функция не принимает 1 аргумент" - PullRequest
2 голосов
/ 16 декабря 2010

У моего базового класса есть эта функция

LRESULT CBaseClass::OnTestFunction(WPARAM id, LPARAM=0)
{
...
}

Когда производный класс вызывает эту функцию

OnTestFunction(nId);

Я получаю ошибку C2660: "функция не принимает 1 аргумент".

Почему это?

Ответы [ 3 ]

5 голосов
/ 16 декабря 2010

Необходимо указать значение по умолчанию в определении класса в заголовочном файле.

class CBaseClass {
    ....
    LRESULT OnTestFunction(WPARAM id, LPARAM=0);
    ....
};
4 голосов
/ 16 декабря 2010

Значение по умолчанию должно быть в определении класса:

class CBaseClass {
    LRESULT OnTestFunction(WPARAM id, LPARAM=0);
};

, чтобы производный класс мог видеть эту подпись и значение по умолчанию.

0 голосов
/ 16 декабря 2010

Не должно ли быть имя параметра в подписи? Как:

LRESULT CBaseClass::OnTestFunction(WPARAM id, LPARAM optional = 0)
{
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...