将main()传递给C ++中的函数

时间:2015-10-20 02:24:57

标签: c++

我有一个函数cleanup()

void cleanup() {
// blah
}

int main() {
// many variable initializations
// call cleanup
cleanup(this); // <--- can i do this? 
}

我可以将main()传递给函数cleanup()吗? 并通过以下方式进行清理: 这 - &GT; something.close() 和 this-&gt; something = NULL

感谢。

2 个答案:

答案 0 :(得分:1)

不,你不能这样做。 Application.cutcopymode = False Application.cutcopymode = True 指针仅在您未使用的类的范围内可用。 this函数未在类中定义。

另外,你不能在C ++中传递函数,因为它们不是“一等公民”。您需要使用函数指针来传递函数,即使这样,尝试传递main也没有意义。这通常在需要回调时是有意义的,main当然不能用于此目的。

我建议您开始使用C ++语言的入门教程,例如this one

答案 1 :(得分:1)

RE

  

我可以将main()传递给函数cleanup()吗?

不,你不能 - 在正式的正确程序中 - 因为你不能使用main的地址。

您可以简单地使用C ++析构函数,而不是命名的清理函数。让每个对象在它的析构函数中自行清理。这被称为 RAII 资源获取是初始化(好吧,它是一个愚蠢的缩写)。