Определение параметров функции по умолчанию в классе C Builder и ошибка слишком малого количества параметров

#c #c builder #c builder-2010

#c #c builder #c builder-2010

Вопрос:

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

Однако, если я перемещаю его после вызова функции, 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) выше вызывающей функции, чтобы заставить ее работать до сих пор.

Ответ №1:

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

 void Function(int a = 123);
  

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

Комментарии:

1. Спасибо… теперь работает. И в ту минуту, когда я ввел это, я также понял, почему это работает, и моя версия не была … тупой … тупой … тупой! В объявлении и определении параметр всегда указывался после вызывающей функции.