首页 > 解决方案 > 每当我访问派生类中的成员时,我是否必须限定基类?

问题描述

我有以下问题,这很烦人。我在两个编译器上试过了,似乎很正常。有什么方法可以避免每次访问成员时都限定父/基类?

#include <iostream>

template <typename T, typename U, typename V>
struct MyBase
{
    int baseMember;
    void baseFunction() { std::cout << "Hey"; }

    struct base_internal_struct { static inline int member; };
};

template <typename T, typename U, typename V>
struct MyDerived : public MyBase<T, U, V>
{
    int func() {
        std::cout << baseMember;  // Identifier not found
        std::cout << MyBase<T, U, V>::baseMember; // OK

        std::cout << base_internal_struct::member; // Identifier not found
        std::cout << MyBase<T, U, V>::base_internal_struct::member; // OK
        
        baseFunction(); // Identifier not found
        std::cout << MyBase<T, U, V>::baseFunction(); // OK

    }
};

int main()
{

}

标签: c++templatesinheritance

解决方案


推荐阅读