我试图在构造函数中使用__FILE__
and__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 转换回浮点数,并且代码页上的类型被重写为浮点数. 或者,将……希望如此。
对我有什么建议吗?