Я использую code :: blocks, с, я полагаю, gcc.Учитывая пример кода (это псевдокод и может не повторять проблему):
//Assume this is in a separate header file to B
class TestA
{
protected:
int A;
public:
void Function1(){A = 0;}
};
class TestB : public TestA
{
public:
void CallFunction(){ A = 10; Function1();}//
};
Я получу похожие ошибки компиляции, например: Ошибка: 'A' не объявлено в этой области.Ошибка: Function1 () не объявлена в этой области.
У меня сложилось впечатление, что все базовые переменные и функции были унаследованы для подкласса.Учитывая, что в базовом классе много функций и переменных, я не хочу использовать ключевое слово «using», так как я должен был бы объявить его для каждой функции и переменной (насколько мне известно).
IsЕсть ли способ сделать так, чтобы TestB явно или фактически включал в себя материал, который он наследовал?
Соответствующие фрагменты ниже
Хорошо.Невозможно включить пример кода, как он есть в проекте, но я процитирую фрагменты ключа:
C:\Users\user\Desktop\Projects\RND2\TemplateListAdv.h|30|error: 'Size' was not declared in this scope|
Строка, в которой он находится:
if(!Array.SetToSize(Size))
Класс, в котором он находится,:
template<typename TemplateItem>
class TemplateListAdv : public TemplateList<TemplateItem>
И инкриминирующая строка из TemplateList:
SIZE_TYPE Size; //SIZE_TYPE is unsigned long.
//SIZE_TYPE is available in all files as unsigned long.
Файлы идут: TemplateList.h-> TemplateBasics.h-> TemplateListAdv.h
Нетпропущенные файлы из того, что я вижу.
Я добавлю, ключевое слово 'using' разрешает его индивидуально, но меня это беспокоило, так как я думал, что наследование было автоматическим.
Данные компилятора какзапрошено:
"Выпуск 10.05 rev 6283 (2010-05-27 09:09:13) gcc 4.4.1 Windows / Unicode - 32 bit"