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

标签 c++ class compiler-errors syntax-error keyword

这两种方法有什么区别?

有时当我遇到编译时错误提示编译器无法识别 一些类类型在函数签名中,那么如果我在各自的变量前面加上关键字“class”,它总是可以解决这种编译时错误。

例如,如果编译器无法识别

中的 Client 类型
void recv( Client * c )

如果我把它改成

void recv( class Client * c )

问题解决了。

很抱歉,由于我随机想到了这个问题,所以无法想出具体的例子。

最佳答案

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

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

struct A {};

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

void f( struct A );

关于c++ - 使用 "class "关键字声明一个变量 vs 在函数签名中声明一个没有 "class"关键字的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880389/

相关文章:

class - Haskell 单体可折叠玫瑰树

c++ - 初始化类和列表

java - 我有一个处理图片的Java 程序。它编译并运行,但没有显示任何内容......有人知道出了什么问题吗?

java - Jar 存在于本地 Maven 存储库中,但仍然编译错误,错误为 "Package does not exist"

java - 无法从 java.lang.Class<T> 转换为 java.lang.Class<T>

c++ - 编译c代码时如何使g++忽略calloc指针类型错误

c++ - 如何让 PCRE 与 C++ 一起工作?

c++ - C++中的不同数字

C++ 移动语义编译错误 C2751

c++ - 检测动态分配的对象?