クラスで作業する場合、すべて問題ありません。
struct Base1 {
int value;
Base1(int value) : value(value) { }
};
struct Test1 : public Base1 {
int getValue() { return value; }
Test1(int value) : Base1(value) { }
};
ただし、テンプレートではスコープの解決が必要です。
template <typename T>
struct Base {
T value;
Base(T value) : value(value) { }
};
template <typename T>
struct Test : public Base<T> {
typedef Base<T> parent;
T getValue() { return parent::value; } // why do I need to use parent:: here?
Test(T value) : parent(value) { }
};
スコープの解決がないと、エラーが発生します'value' was not declared in this scope
(gcc コンパイラを使用)。なんで?