5

我想做一个类,用户可以修改成员变量来更改其成员函数的默认参数。有没有办法让动态默认参数?

class Class 
{ 
    public int Member; 

    public void Method(int Argument = Member) 
    { 
     // This compiles fine, until I try to actually use 
     // the method elsewhere in code! 

     // "Error: need 'this' to access member Member" 
    } 
} 

我的解决方法到目前为止一直使用幻数,这显然是不理想的。

public void Method(int Argument = 123) 
{ 
    int RealArgument; 

    if (Argument == 123) RealArgument = Member; 
    else RealArgument = Argument; 
} 

有没有更好的办法,还是我坚持这个“黑客”的解决方案?

回答

7

是的,忘记默认参数。

class Class 
{ 
    public int Member; 

    public void Method(int Argument) 
    { 
     ... 
    } 

    public void Method() 
    { 
     Method(Member); 
    } 
} 

这里不需要欺骗。

+0

这对许多参数来说可能不切实际,但mixin可以帮助自动生成代码。 – Maxpm

+0

使用可变参数模板和小心的命名可能允许您仅使用基本函数和单个包装器模板来获得该效果。 – BCS

相关问题