Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将main()传递给C++;_C++ - Fatal编程技术网

C++ 将main()传递给C++;

C++ 将main()传递给C++;,c++,C++,我有一个函数cleanup() void cleanup(){ //废话 } int main(){ //许多变量初始化 //呼叫清理 cleanup(this);//something.close() 及 这个->某物=NULL 谢谢。不,您不能这样做。此指针仅在未使用的类的范围内可用。主函数也未在类中定义 也不能在C++中传递函数,因为它们不是“一流公民”。您需要使用函数指针来传递函数,甚至是通过“代码>主代码< /代码>,这是没有意义的。当需要回调时,这通常是有意义的,而代码当然不适合于此

我有一个函数cleanup()

void cleanup(){
//废话
}
int main(){
//许多变量初始化
//呼叫清理
cleanup(this);//something.close()
及
这个->某物=NULL


谢谢。

不,您不能这样做。
指针仅在未使用的类的范围内可用。
函数也未在类中定义

也不能在C++中传递函数,因为它们不是“一流公民”。您需要使用函数指针来传递函数,甚至是通过“代码>主代码< /代码>,这是没有意义的。当需要回调时,这通常是有意义的,而<>代码<主/代码>当然不适合于此目的。 <>我建议您开始使用C++语言的入门教程,例如.< /p> < P> Re/P> 我可以将

main()
传递到函数
cleanup()

不,您不能——在正式正确的程序中——因为您不允许使用
main
的地址


<> P>而不是命名的清除函数,你可以简单地使用C++析构函数。让每个对象在它自己的析构函数中自己清理。这叫做“强> RAII<强”:资源获取是初始化(好,它是一个愚蠢的缩写)。,但在此之前,您应该了解类。您不需要清理main。一旦它超出范围(当您的程序结束时)任何变量都将返回到堆栈。通常您只需要担心动态分配的变量,但对于main,一旦程序结束,所有这些变量都将返回到操作系统。这看起来像是一个——如果您问一个关于您想做什么的问题,而不是关于您的关于如何做到这一点的想法。我了解课程,只是想知道这样的事情是否可能。是的@Hurkyl,我应该这样做,而不是邀请大量的反对票。哈哈……感谢你真正回答了这个问题。我只是想知道这是否可能,但在谷歌搜索中并没有出现。
void cleanup() {
// blah
}

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