以下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()
{}
但是我不了解关于唯一指针的语法。
问题:
的语法是<class A_impl>
什么?这叫什么(放在class
未声明的标识符之前)?它在做“向前声明”A_impl
还是什么?关于标识符我什么也没说A_impl
。编译器为什么还可以呢?
如果这可能与任何“设计模式”有关,请帮助我识别它。
请指出正确的方向。
它在做“向前声明”
A_impl
还是什么?
究竟。可能令人困惑的是,它在template参数中使用了详细的类型说明符。与“正常”前瞻性声明的差异
关于
标识符类型, 我什么也没说A_impl
。编译器为什么还可以呢?
std::unique_ptr
可以使用不完整的类型实例化-就像原始指针一样。
如果这可能与任何“设计模式”有关,我该如何识别?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句