首页 > 解决方案 > “class classname* funcname(void)”在 C++ 中是什么意思?

问题描述

我在一个头文件中找到了以下代码,并且“BOOT”类是在另一个头文件中定义的。

class BOOT* boot(void);

它看起来像一个函数的声明,它以class.

标签: c++

解决方案


这是一个详细的类型说明符:

详细类型说明符可用于引用先前声明的类名(类、结构或联合)或先前声明的枚举名称,即使该名称被非类型声明隐藏。它们也可以用来声明新的类名。

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

推荐阅读