gpt4 book ai didi

c++ - 是否可以在 C++11 中使用前向声明的类来声明嵌套类型别名?

转载 作者:行者123 更新时间:2023-11-28 03:22:01 27 4
gpt4 key购买 nike

我通过在其各自的头文件中转发声明该类来打破循环包含依赖关系,但是这对在类内部使用类型别名的现有约定造成了一些影响:

#include <memory>

class C {
public:
using Ptr = std::shared_ptr<C>;
};

理想情况下,可以执行以下操作:

#include <memory>

class C;
using C::Ptr = std::shared_ptr<C>;

但这不可能,因为C不是一个完整的类型(还)。我意识到可以创建别名 using CPtr = std::shared_ptr<C>; , 但我希望我使用 typename 遗漏了一些明显的东西或其他一些可以建立 C 的关键字作为创建嵌套类型别名的足够完整的类型。

最佳答案

不,您不能将某些内容放入类中,除非将其实际写入类定义中。

这不是C 是否是完整类型的问题。很简单,C++ 没有任何语法允许将名称添加到类作用域(或任何作用域),除非在该作用域中实际编写名称。

关于c++ - 是否可以在 C++11 中使用前向声明的类来声明嵌套类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com