2

我正在尝试使用 C++ 中的本地类并坚持使用以下代码:

void f1(int a)
{
    struct Inner1
    {
        int a;
    };

    struct Inner2 : Inner1
    {
        void foo()
        {
            a = 10; // Okay
        }
    };
};

template<typename T>
void f2(T a)
{
    struct Inner1
    {
        T a;
    };

    struct Inner2 : Inner1
    {
        void foo()
        {
            a = T(10); // error: use of parameter from containing function
        }
    };
};

template<typename T>
void f3(T a)
{
    struct Inner
    {
        T a;

        void foo()
        {
            a = T(10); // Okay
        }
    };
};

int main()
{
    f1(10);
    f2(10);
    f3(10);
    return 0;
}

为什么会这样?我是对的,这是编译器错误(我使用的是 gcc 4.8.4 和 gcc 4.9.2)并且代码是否正确?

4

0 回答 0