使用"class"关键字声明变量vs在函数签名中声明一个没有"class"关键字的变量

cpp*_*ame 6 c++ compiler-errors class syntax-error keyword

这两种方法有什么区别?

有时当我遇到编译时错误抱怨编译器无法识别函数签名中的某些类类型时,如果我在相应变量前面添加关键字"class",它总能解决这种编译时错误.

例如,如果编译器无法识别Client中的类型

void recv( Client * c )
Run Code Online (Sandbox Code Playgroud)

然后,如果我改变它

void recv( class Client * c )
Run Code Online (Sandbox Code Playgroud)

问题已经解决了.

对不起,我无法想出一个具体的例子,因为我随机提出了​​这个问题.

Vla*_*cow 12

在类型参数声明中使用关键字class,struct,enum称为详细类型说明符.它在声明函数的范围中引入了新类型.它类似于前向声明.

还有另一种使用这种声明.例如,如果对象的名称或函数名称隐藏具有相同名称的类或枚举.例如

struct A {};

A A; // now A is seen as an identifier of the object

void f( struct A );
Run Code Online (Sandbox Code Playgroud)