gcc编译错误:模板类中嵌套类A的成员表在嵌套的友元类中不可见。为什么?

时间:2015-01-23 06:48:56

标签: c++ templates gcc nested mingw

我正在尝试在Windows XP上的mingw32中编译一些代码,但是我收到了一个错误。所以,我已经编写了该代码的简化版本并得到了相同的错误。 这是:

template <class T>
class Table
{
public:

    class A
    {
    private:
        int nEntry;
        friend class B;
    };

    class B : public A
    {
    public:
        void Remove()
        {
            nEntry = 1;
        }
    };
};

编译器错误消息:

E:\cbProjects\projects\1\main.cpp||In member function 'void Table<T>::B::Remove()':|
E:\cbProjects\projects\1\main.cpp|24|error: 'nEntry' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|

在哪里我可以阅读这些项目为何如此? (链接将是有用的 - 可能会出现一些其他类似的错误或编译器包)

1 个答案:

答案 0 :(得分:1)

在模板中,成员访问有时必须以明确的this->开头,如本例所示。您可以通过这种方式使代码工作:

this->nEntry = 1;