c++ - “class classname* funcname(void)”在 C++ 中是什么意思?
问题描述
我在一个头文件中找到了以下代码,并且“BOOT”类是在另一个头文件中定义的。
class BOOT* boot(void);
它看起来像一个函数的声明,但它以class
.
解决方案
这是一个详细的类型说明符:
详细类型说明符可用于引用先前声明的类名(类、结构或联合)或先前声明的枚举名称,即使该名称被非类型声明隐藏。它们也可以用来声明新的类名。
https://en.cppreference.com/w/cpp/language/elaborated_type_specifier
取自 Artefacto 和 dfrib 的答案,因为它带来了意义:它相当于:
class BOOT;
BOOT* boot(void);
在您的示例中,如果尚不知道,它本质上是对 BOOT 类进行前向声明。struct Data* Data;
从同一页面查看此示例:
struct Node {
struct Node* Next; // OK: lookup of Node finds the injected-class-name
struct Data* Data; // OK: declares type Data at global scope
// and also declares the data member Data
friend class ::List; // error: cannot introduce a qualified name
enum Kind* kind; // error: cannot introduce an enum
};
Data* p; // OK: struct Data has been declared
推荐阅读
- terraform - Terraform 子模块对调用资源的依赖
- flask - 如何不允许浏览器将以前的值存储在烧瓶形式的 StringField 中?
- python - 有没有办法不将 { 放在 python 中 dict 变量的声明旁边?
- sql - 全连接表避免重复
- azure - 无法打开 Jenkins 门户
- python - 在 Python Pandas 中查找新的 Rider_ids
- css - Material Design React 响应式卡片
- c# - 如何在密码重置 b2c 上添加自定义步骤?
- javascript - ssi webshell 到节点 js webshell
- sql - 表中的一列为空,但该表中的另一列可以引用到另一个包含空列信息的表 - 如何?