Я хочу, чтобы получить доступ к защищенному переменной в родительском классе, у меня есть следующий код и он отлично компилируется:не удается получить доступ к переменной в шаблоне базового класса
class Base
{
protected:
int a;
};
class Child : protected Base
{
public:
int b;
void foo(){
b = a;
}
};
int main() {
Child c;
c.foo();
}
Хорошо, теперь я хочу, чтобы все шаблонный. Я изменил код на следующий
template<typename T>
class Base
{
protected:
int a;
};
template <typename T>
class Child : protected Base<T>
{
public:
int b;
void foo(){
b = a;
}
};
int main() {
Child<int> c;
c.foo();
}
И получил ошибку:
test.cpp: In member function ‘void Child<T>::foo()’:
test.cpp:14:17: error: ‘a’ was not declared in this scope
b = a;
^
ли это правильное поведение? Какая разница?
Я использую г ++ 4.9.1