#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. Спасибо… теперь работает. И в ту минуту, когда я ввел это, я также понял, почему это работает, и моя версия не была … тупой … тупой … тупой! В объявлении и определении параметр всегда указывался после вызывающей функции.