На данный вопрос уже ответили:
Ожидалось в Child иметь доступ к val, но компилятор запротестовал(почему?):
template<typename T>
struct Base
{
T val;
};
template<typename T>
struct Child : Base<T>
{
void show() {cout << val + val2 << endl;};
T val2;
};
int main ()
{
Child<int> obj;
obj.val = 123;
obj.val2 = 456;
obj.show();
}
-
error: ‘val’ was not declared in this scope
void show() {cout << val + val2 << endl;};
Следует указать префикс с базовым типом:
void show() {cout << Base<T>::val + val2 << endl;};
иначе компилятор не может определить к чему относится идентификатор val
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники