断言作为朋友类

时间:2015-03-09 09:32:43

标签: c++ assert friend

我不能声明断言类,也不能声明函数对我的班级友好。

我对这样的宣言是对的吗?

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

我已经搜索了很多内容,但是我无法找到assert()的正确参数以及"断言"的真实姓名。类( 我将不胜感激。

1 个答案:

答案 0 :(得分:3)

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

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

所以你的班级实际上说

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

显然不应该编译。