2011-11-26 72 views
-1

我需要在C++中的类定义中执行代码。我有一个宏在方法的定义之后向函数指针添加一个方法。它扩展到对std :: map.insert的调用,它需要在定义中执行(想想Ruby如何在类定义中执行代码)。 类定义可能是这个样子宏展开后:C++类中的可执行代码

bindings.insert(pair<char, ReturnType (*)(FirstArgument, SecondArgument)>("theFunction",&theFunction)); 

这会执行的定义是什么?

回答

2

您需要使用全局,它的构造函数将在程序初始化期间执行。

例如参见these questionsthese,了解如何确保map.insert在构建地图之后才执行。

0

不,你不能在类声明的函数体外部有可执行代码。 (如果我正确理解你的话)。

您希望在哪一点执行它?

+0

我的希望是在方法声明之后将函数添加到方法指针的std :: map中。可能有另一种方式来做到这一点?我可能能够在声明后做到这一点,但这不会很好。它会工作,但破坏我想要做的事情。 – Linuxios

+1

声明在编译时处理,而代码在运行时执行。我认为你必须在别处有代码。 –

+0

好的。这将最终奏效。考虑到C++的静态特性,我想这很有道理。 – Linuxios

0

你可以把它放在构造函数中。