Я пытаюсь использовать макросы __FILE__
и __LINE__
в конструкторе в качестве параметров по умолчанию, но не могу заставить макросы использовать правильные файлы. Они продолжают расширяться из моего заголовочного файла.
Более подробно :Я хотел бы получить номер файла и строки, из которых создается экземпляр объекта как члена моего класса. Но я не хочу вводить параметры вручную каждый раз, когда хочу использовать объекты. Я знаю, что есть способ сделать это, но я не могу понять это. Сейчас я делаю следующее:
В моем заголовочном файле:
mnNumber( float x, const char* filename = __FILE__, int linenumber = __LINE__ ):
value( x ), mFileName( filename ), mFunctionName( nullptr ), mLineNumber( linenumber ), mID( 0 )
Но FILE и LINE расширяются, как если бы они были из моего файла заголовка, а не из фактического местоположения, в котором я использую mnNumber.
Чтобы ответить на вопрос, почему я хотел бы это сделать, я хочу, чтобы код читал свою собственную кодовую страницу. Конкретные значения, которые я использую, регистрируются в менеджере, и конечный пользователь может редактировать их значения. Когда конечный пользователь редактирует значение, оно записывается обратно в кодовую страницу. Итак, мне нужно знать, откуда взялась ценность. Я также позволяю конечному пользователю сказать, что ему больше никогда не понадобится редактировать это значение, и когда он нажимает эту кнопку, значение преобразуется из mnNumber обратно в число с плавающей запятой, а тип на кодовой странице переписывается как число с плавающей запятой.. Или будет... надеюсь.
Какой-нибудь совет для меня?