(C ++)将'this'作为默认参数传递给静态方法

时间:2016-05-17 01:49:57

标签: c++

显然执行static void DoSomething(ClassPointer* MyPtr = this)之类的操作无效,因为静态方法没有this,但是当我调用此DoSomething时,我总是从this传递<Path x:Name="CheckIcon" Width="{TemplateBinding Width, Converter={StaticResource mathConverter}, ConverterParameter=*2/3-20}" Height="{TemplateBinding Height, Converter={StaticResource mathConverter}, ConverterParameter=*2/3-20}" Margin="1,1,0,1.5" Opacity="1" Stretch="Fill" Fill="Silver" Data="F1 M 0,0 L.2,0 L 1,.8 L .8,1 L 0,.2 L .2, 0 M 1,0 L .8,0 L 0,.8 L .2,1 L 1,.2 L .8, 0" /> 这个叫它的班级,我不想每次都把它放进去。

如果有某种方法可以获取对该方法本身内部调用该静态方法的类的引用,那么这将有效,但AFAIK没有。

我有哪些选择?

2 个答案:

答案 0 :(得分:1)

如果您需要将请求对象的上下文作为引用传递,我会考虑将该方法设置为非静态实例方法。这样,您可以在方法中引用该类的其他实例成员。如果行为根据子类类而改变,也许您可​​以使用可以覆盖的虚方法。

答案 1 :(得分:1)

写一个宏

#define DoSomethingX(...) DoSomething(this, __VA_ARGS__)

并致电

StaticFunctionClass::DoSomethingX(par1, par2);