Определение параметров функции по умолчанию в классе C ++ Builder и ошибка «Слишком мало параметров» - PullRequest
1 голос
/ 10 ноября 2011

У меня есть класс, который определяет функцию с параметрами по умолчанию.Он работает нормально, если определение функции находится в заголовочном файле перед функцией, которая его вызывает.

Однако, если я переместлю его после вызывающей функции, C ++ Builder (2010) сообщит об ошибке слишком мало параметров.

заголовок может быть, например:

class TSomething
{
public:
void CallingFunction();
void Function(int a);
}

, а файл cpp может быть:

#include "Header.h"

TSomething::CallingFunction()
{
Function(); // "Too few arguments" here...
}

TSomething::Function(int a = 123)
{
//... some code here ...
}

Так что, если вызывающая функция находится перед "Function", она сообщает о слишком малом числе параметров.Я не понимаю почему, потому что он включает определение функции в операторе #include в файле cpp.Может кто-нибудь сказать мне, как изменить это так, чтобы он правильно принимает аргументы по умолчанию?Я могу переместить функцию (int a) над функцией CallingFunction, чтобы она работала до сих пор.

1 Ответ

4 голосов
/ 10 ноября 2011

Вам необходимо поместить аргументы по умолчанию в объявлении функции-члена внутри вашего класса:

void Function(int a = 123);

Кроме того, удалите аргументы по умолчанию из определения вне вашего класса.

...