我正在尝试使用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)并且代码是正确的吗?