我不能声明断言类,也不能声明函数对我的班级友好。
我对这样的宣言是对的吗?
class Baka
{
private:
friend assert; //invalid friend declaration
friend void assert(); //expected an identifer
public:
}
我已经搜索了很多内容,但是我无法找到assert()的正确参数以及"断言"的真实姓名。类( 我将不胜感激。
答案 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:
}
显然不应该编译。