gpt4 book ai didi

c++ - 类继承和类原型(prototype)设计的问题

转载 作者:行者123 更新时间:2023-11-30 05:38:19 25 4
gpt4 key购买 nike

在下面的简化代码中,我在 VS 中尝试在 typedef 语句中不发生错误,因为它在该语句中不识别 B 并将给出错误“missing ';'”在“<”之前。

template<class DT>
class A{
typedef B<DT> iterator;
}

template<class DT>
class B{
friend A<DT>;
}

而且我知道插入 B 的类原型(prototype)应该可以解决这个问题(来源:Class prototyping)但我仍然发现 VS 在输入 typedef 语句之前无法识别 B 的存在,并且仍然会吐出那个同样的语法错误

class B; //prototype of B
template<class DT>
class A{
typedef B<DT> iterator;
}

template<class DT>
class B{
friend A<DT>;
}

并且在将安排切换为先分配 B 然后分配 A,并将其更改为具有 A 的类原型(prototype)的情况下,因为 A 应该是 B 的友元,但编译器不知道 B 存在然而。我收到“缺少类模板 A 的参数列表”的错误。

class A; //prototype of B
template<class DT>
class B{
friend A<DT>;
}`
template<class DT>`
class A{
typedef B<DT> iterator;
}

并查看该错误(来源:Argument list for class template is missing)我发现您将语句更改为采用 '' 并在其上方添加语句 'template'。这确实解决了两个类之间的继承问题,但这会导致我们的类 A 的方法(在我的详细代码中)在测试功能时无法访问。关于我应该如何保持这种继承不变但又不使类 A 变成纯虚拟的、无法从其他来源 (.cpp) 访问的任何想法?

最佳答案

这应该适合你:

template<class DT> class B;

template<class DT>
class A{
typedef B<DT> iterator;
};

template<class DT>
class B{
friend A<DT>;
};

关于c++ - 类继承和类原型(prototype)设计的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32833504/

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