gpt4 book ai didi

c++ - 基类模板实例化取决于派生类构造函数参数类型

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:53 28 4
gpt4 key购买 nike

下面,基类构造函数是不是应该由编译器根据派生类构造函数参数类型生成?

template <class T>
class foo
{
int a;
public:
foo(T a){}
// When I convert the constructor to a function template, it works fine.
// template <typename T> foo(T a){}
};

class bar : public foo<class T>
{
public:
bar(int a):foo(a){}
};

int main(void)
{
bar obj(10);
system("pause");
return 0;
}

error C2664: 'foo::foo(T)' : cannot convert parameter 1 from 'int' to 'T'

我理解错误,但这是为什么呢?

最佳答案

class bar : public foo<class T> 中的语法不正确。

  • 要么 bar取决于模板参数 Tbar应该是一个模板:

    template<class T>
    class bar : public foo<T>
    {
    public:
    bar(int a):foo(a){}
    };


    int main()
    {
    bar<int> obj(10);
    }
  • 或者你想要barfoo 的特定实例继承例如:

    class bar : public foo<int>
    {
    public:
    bar(int a):foo(a){}
    };


    int main()
    {
    bar obj(10);
    }

关于c++ - 基类模板实例化取决于派生类构造函数参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619633/

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