gpt4 book ai didi

c++ - 我可以在前向声明的类中使用类型吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:54 25 4
gpt4 key购买 nike

这个类有一个枚举:

class ThreadController
{
public:
enum ThreadType { ... }
}

是否可以使用前向声明类中的ThreadType &

class ThreadController;

class ThreadWorker
{
public:
static ThreadWorker makeThreadWorker(const ThreadController::ThreadType & type);
}

我收到以下错误:

'ThreadType' in 'class ThreadController' does not name a type

但是由于我使用的是引用,编译器不能对头文件中没有定义感到满意吗?

最佳答案

您可以使 makeThreadWorker 成为模板函数。

template <typename T = ThreadController>
static ThreadWorker makeThreadWorker(const typename T::ThreadType & type)
{

}

如果 T 不包含 ThreadType,编译器将抛出错误。可选择添加 static_assert 以将 T 限制为仅 ThreadController

static_assert(std::is_same<ThreadController, T>::value, "error");

关于c++ - 我可以在前向声明的类中使用类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578435/

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