4
考慮下面的例子中的類的基類的構件時:錯誤使用嵌套在C++模板
template <typename T>
struct A {
struct B {
int b;
};
struct C : B {
void f() {
b = 0;
}
};
};
與GCC 4.8.1編譯它提供了以下錯誤:
test.cc: In member function ‘void A<T>::C::f()’:
test.cc:9:11: error: ‘b’ was not declared in this scope
b = 0;
^
但是,b
是父類B
(我在示例中使用struct
來公開所有內容)的成員,並且如果我編制了A
非模板,則所有內容都將編譯。
爲什麼編譯器給出這個錯誤,我該如何避免它?