首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有模板变量的基类的访问结构

具有模板变量的基类的访问结构
EN

Stack Overflow用户
提问于 2022-03-25 13:53:03
回答 1查看 37关注 0票数 -1

我希望创建一个具有模板的基类派生类,并保留template选项。

但是,我不能访问作为基类一部分的结构。

以下是一个例子:

代码语言:javascript
复制
template <typename T1>
class Base{
    public:
    Base(){}
    ~Base(){}

    struct Struct {
        int Integer=0;
    };

    virtual void Function(Struct NewStrcut){ }

    //void Proccess(int T_Var){
    void Proccess(T1 T_Var){
        // do something
    }

};

template <typename T>
class Derived : public Base<T>{
//class Derived : public Base{
    Derived(){}
    ~Derived(){}

    void Function(Struct NewStrcut){
        // do something
    }

};

我得到以下错误:

错误:“Struct”未被声明为Build51-void函数(Struct NewStrcut){

我正在使用c++17和GCC11在Ubuntu18上

EN

回答 1

Stack Overflow用户

发布于 2022-03-25 14:28:24

多亏了@πάνταῥεῖ@Fareanor,我找到了答案

只需在Struct之前添加"typename Base::“

正如您在以下代码中所看到的:

代码语言:javascript
复制
template <typename T1>
class Base{
    public:
    Base(){}
    ~Base(){}

    struct Struct {
        int Integer=0;
    };

    virtual void Function(Struct NewStrcut){ }

    //void Proccess(int T_Var){
    void Proccess(T1 T_Var){
        // do something
    }

};

template <typename T>
class Derived : public Base<T>{
//class Derived : public Base{
    Derived(){}
    ~Derived(){}

    void Function( typename Base<T>::Struct NewStrcut){
        // do something
    }

};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71618066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档