断言为朋友 class

assert as a friend class

我既不能声明 assert class,也不能声明 assert 函数对我的 class 友好。

我这样的声明对吗?

class Baka
{
private:
friend assert;          //invalid friend declaration
friend void assert();   //expected an identifer
public:
}

我已经用谷歌搜索了很多,但找不到 assert() 的正确参数和 "assert" class( 我将不胜感激任何帮助。

assert 不是函数,而是宏。因此,如果您在上游包含 <cassert>,它将在编译前由预处理器扩展

// cassert file
// Not debug version
#define assert(_Expression)     ((void)0)

所以你的 class 实际上是说

class Baka
{
private:
  friend ((void)0);          //invalid friend declaration
  friend void ((void)0)();   //expected an identifer
public:
}

这显然不应该编译。