【发布时间】:2022-02-09 19:56:32
【问题描述】:
如何在 C++ 中向匿名类添加析构函数?就像在 PHP 中一样,如果我想在我的课程超出范围时运行某些东西,那就是
$foo = new class() {
public $i=0;
public function __destruct()
{
echo "foo is going out of scope!\n";
}
};
但是在具有普通非匿名类的 C++ 中,您可以使用 ~ClassName(){} 指定析构函数,但匿名类没有名称!那么如何将析构函数添加到
class {public: int i=0; } foo;
在 C++ 中?我尝试使用变量名作为类名,但这不起作用:
class {
public:
int i;
~foo(){std::cout << "foo is going out of scope!" << std::endl;}
} foo;
导致
prog.cc: In function 'int main()':
prog.cc:51:31: error: expected class-name before '(' token
51 | class {public: int i=0; ~foo(){std::cout << "foo is going out of scope!" << std::endl;};} foo;
| ^
我也尝试只指定~,但这也没有用,
class {
public:
int i=0;
~(){std::cout << "foo is going out of scope" << std::endl;}
} foo;
导致
prog.cc:48:30: error: expected class-name before '(' token
48 | class {public: int i=0; ~(){std::cout << "foo is going out of scope" << std::endl;};} foo;
| ^
【问题讨论】:
-
我认为不可能,因为语法需要类名en.cppreference.com/w/cpp/language/destructor
标签: c++ destructor anonymous-class