我正在使用code :: blocks,我认为gcc。给出的示例代码(这是伪代码,并可能无法复制的问题):C++继承问题
//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'关键字,因为我必须为每个函数和变量声明它(据我所知)。
有什么办法让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
从我所能看到的没有丢失的文件。
我会解决它,'使用'关键字可以单独解决它,但这一直在扰乱我,因为我认为继承是自动的。
编译器数据的要求:
“释10.05转6283(2010-05-27 9时09分13秒),GCC 4.4.1的Windows/Unicode的 - 32位”
这应该像预期的那样工作,所以你必须找到一个例子,它会失败... – carlpett
尝试张贴真实的代码和他们所在的文件。据我可以告诉它只是看起来像你不'在testb.cpp中包含#include“testa.h” – sashang
发布出现错误的代码,此代码没有错误。 –