使用`class`关键字后跟一个未声明的标识符

奥富雷

以下hpp和cpp文件是我正在使用的大型程序的摘录。它将与一起编译g++ -std=c++17 -pedantic -Wall -Wextra

// a.hpp

#include <memory>

class A
{
    std::unique_ptr<class A_impl> my;
};
//a.cpp

#include "a.hpp"

int main()
{}

但是我不了解关于唯一指针的语法。

问题:

  1. 的语法是<class A_impl>什么?这叫什么(放在class未声明的标识符之前)?它在做“向前声明”A_impl还是什么?关于标识符我什么也没说A_impl编译器为什么还可以呢?

  2. 如果这可能与任何“设计模式”有关,请帮助我识别它。

请指出正确的方向。

丹尼尔·戴

它在做“向前声明” A_impl 还是什么?

究竟。可能令人困惑的是,它在template参数中使用了详细的类型说明符与“正常”前瞻性声明的差异

关于标识符 类型, 我什么也没说A_impl编译器为什么还可以呢?

std::unique_ptr 可以使用不完整的类型实例化-就像原始指针一样。

如果这可能与任何“设计模式”有关,我该如何识别?

PIMPL-“实施指标”的成语。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当方法在同一个类中定义时,为什么会使用未声明的标识符“downloadDataFromURL”?

错误:使用来自另一个单元的表单的“未声明的标识符”-Delphi 2010

使用未声明的标识符

未声明的标识符使用arrayfire

FBSDKGraphRequest使用未声明的标识符

使用未声明的标识符“ SKSpriteNode”

使用未声明的标识符-Xcode

使用未声明的标识符UIApplicationOpenSettingsURLString

使用未声明的标识符“ UILocalNotification”

使用未声明的标识符“kDefaultNative”

从版本5开始,“枚举”是一个关键字,不能用作标识符

使用两个cpp文件时使用未声明的标识符

如何处理`使用未声明的标识符“ UIDevice”

错误:使用未声明的标识符'groupRectangles'

解析中的“使用未声明的标识符'PFUser'”

使用未声明的标识符 __glibcxx_assert

使用简单宏C ++的未声明的标识符错误

Facebook SDK Swift-使用未声明的标识符

使用未声明的标识符DISPATCH_PRIORITY_DEFAULT

在头文件(C)中使用未声明的标识符

使用未声明的标识符“ gl_InstanceID”

错误:使用未声明的标识符“ ctime_s”

错误:使用未声明的标识符“标签”

错误的“使用未声明的标识符'{IDENTIFIER}'”

Xcode 使用未声明的标识符“func”

iOS:使用未声明的标识符和NSMutableArray

错误:使用未声明的标识符“ T”

未声明的标识符,不使用谷歌查找单位

使用未声明的标识符“RD16”