gpt4 book ai didi

c++ - C++中模板参数的类继承

转载 作者:行者123 更新时间:2023-11-30 03:14:37 26 4
gpt4 key购买 nike

我是 C++ 的新手,碰巧遇到了如下代码:

template<class T, class Composite> class CompositeTester: public Composite
{
public:
CompositeTester(T* instance, const typename Composite::Parameters& parameters) : Composite(parameters)
{
singletonInstances_[parameters.instanceIndex] = instance;
}
}
  1. 继承对我来说不是很清楚,因为继承来自模板类参数本身。这个概念是什么?
  2. 在构造函数 CompositeTester 中,我意识到 Composite 的实例是使用 parameters 作为参数创建的。但是这种语法很难理解const typename Composite::Parameters。如何解释这种语法?定义类组合的对象,即使在它存在之前也是有效的吗?

  3. singletonInstances_[parameters.instanceIndex] = instance。此处是否为 parameters.instanceIndex 创建了一个新变量?除了我在此处的问题中提到的内容外,class Composite::Parametersclass Composite 的源代码中没有任何定义。

最佳答案

  1. 这被称为 curiously recurring template pattern .

  2. typename 在这里用来表示依赖的类型名称。没有它,编译器会将限定名称解析为非类型实体。请参阅我们的常见问题解答:Where and why do I have to put the "template" and "typename" keywords?

  3. 这在标准 C++ 中格式错误,因为未声明 singletonInstances_。如果在基类中声明,则需要使用this->使其成为依赖名。

关于c++ - C++中模板参数的类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672228/

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