Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从另一个文件继承私有成员变量和公共函数?_C++_File_Inheritance_Compilation - Fatal编程技术网

C++ 如何从另一个文件继承私有成员变量和公共函数?

C++ 如何从另一个文件继承私有成员变量和公共函数?,c++,file,inheritance,compilation,C++,File,Inheritance,Compilation,我试图从Stack.cpp文件中的container.cpp调用函数insertBack(newVal),但编译器抛出错误:标识符“insertBack”未定义。另外,尝试对同一文件中但位于专用区域下的变量n执行相同的操作——错误是相同的:标识符“n”未定义 这是我第一次进行多文件编译和继承 Stack.cpp #包括“pch.h” #包括“Stack.h” #包括“container.h” Stack::Stack() { 容器(); } bool Stack::push(int newVal

我试图从Stack.cpp文件中的container.cpp调用函数insertBack(newVal),但编译器抛出错误:标识符“insertBack”未定义。另外,尝试对同一文件中但位于专用区域下的变量n执行相同的操作——错误是相同的:标识符“n”未定义

这是我第一次进行多文件编译和继承

Stack.cpp

#包括“pch.h”
#包括“Stack.h”
#包括“container.h”
Stack::Stack()
{
容器();
}
bool Stack::push(int newVal)
{
返回insertBack(newVal);
}
void Stack::pop()
{
--n;
}
容器.h

\ifndef集装箱
#定义容器
#布拉格语一次
#包括
类容器
{
公众:
容器();
//后置条件:数据成员n初始化为-1,空arr数组中的所有元素初始化为零
bool-insertBack(int-val);
//前提条件:容器对象未满
//后置条件:如果arr数组未满,则n将递增1;返回true,并在arr数组末尾插入val
//否则,返回false;不插入该值,程序继续执行。
私人:
static const int CAPACITY=10;//arr数组的物理大小或容器对象的存储容量
int-arr[CAPACITY];//arr数组最多可以存储容量为10的整数
int n;//n用作arr数组的下标。对于空数组,n被初始化为-1
//每次在arr数组中插入一个新值时,n必须首先递增
//由于n已初始化为-1,第一个插入值存储在arr[0]中,
//第二个插入值将在arr[1]中,以此类推,第n个插入值将为
//存储在arr[n–1]中。显然,n+1表示元素的实际数量
//插入n轮后存储在数组中。
};
#恩迪夫
Stack.h

#ifndef堆栈
#定义堆栈
#布拉格语一次
#包括
类堆栈
{
公众:
堆栈();
//后置条件:创建一个空堆栈对象(与P1中一样,n初始化为-1)
bool-push(int-newVal);
//后置条件:如果堆栈已满,则返回false。否则,返回true;同时newVal被推送到堆栈上
//堆栈大小增加1
void pop();
//前提条件:堆栈不能为空,否则将不会调用此函数
//后置条件:堆栈顶部的对象(一个整数值)在逻辑上弹出或删除,3)堆栈大小递减1
};
#恩迪夫

根据
堆栈
构造函数的内容,我得出结论,您希望
堆栈
继承自
容器
Stack.h
已经包括
container.h
,因此
container
类在
Stack
可见的任何地方都可见

您需要做的是声明实际的继承:

class Stack : container

您将得到一些编译器错误(一方面,容器构造函数是私有的),但这是另一天的故事。

堆栈
构造函数的内容中,我得出结论,您希望
堆栈
容器
继承
Stack.h
已经包括
container.h
,因此
container
类在
Stack
可见的任何地方都可见

您需要做的是声明实际的继承:

class Stack : container

您将遇到一些编译器错误(一方面,容器构造函数是私有的),但这是另一天的故事。

特别是,请以文本形式提供代码(而不是图像链接),因为图像链接将来可能会断开。为了提供一个简单的示例,我建议向我们展示
Stack.cpp
的相关内容以及
Stack.h
container.h
的相关部分。请使用代码文本而不是图片编辑您的帖子。我试图将图像粘贴到我的IDE中,但我的IDE不喜欢图片。现在请用
Stack.h
编辑它。我们需要了解
Stack
Container
的关系。感谢您将图片转换为文本,但请添加一个,以确保我们了解了解问题所需的所有详细信息。在哪里定义了
insertBack
?没有。特别是,请以文本形式提供代码(而不是图像链接),因为图像链接将来可能会中断。为了提供一个简单的示例,我建议向我们展示
Stack.cpp
的相关内容以及
Stack.h
container.h
的相关部分。请使用代码文本而不是图片编辑您的帖子。我试图将图像粘贴到我的IDE中,但我的IDE不喜欢图片。现在请用
Stack.h
编辑它。我们需要了解
Stack
Container
的关系。感谢您将图片转换为文本,但请添加一个,以确保我们了解了解问题所需的所有详细信息。在哪里定义了
insertBack
?没有。我犯了一个大错误;当我减少这个问题的代码量时,我消除了公众的误解。在提出这个问题之前,我确实尝试过:
class-Stack:public-container
:我仍然得到了这两个未定义的错误,所以我恢复了我的更改。我现在根据你的建议做出了改变:错误仍然存在。@S.咳嗽是你唯一的错误