两个单独的类不共享相同的数据 C++
two separate classes doesn't share the same data c++
我有两个不同的类PipeNetwork.hpp
PipeNetwork.cpp
和Tube.hpp
Tube.cpp
哪个class Tube : public PipeNetwork
管网中的以下函数
void PipeNetwork::testing()
{
Tube u;
u.length();
std::cout << "function works fine" << std::endl;
}
length()
位于Tube
void Tube::length()
{
std::vector<double>::iterator i;
L.reserve(get_tubes_numbers()); // get_tubes numbers is function in PipeNetwork
//bla bla bla
}
int PipeNetwork::get_tubes_numbers()
{
return tubes_numbers;
}
最后是main
int main()
{
PipeNetwork Oral;
Oral.InputData("Input.txt");
Oral.testing();
return 0;
}
应该发生什么:
1-InputData
获取一些数据并将其存储在PipeNetwork
类中,包括get_tubes_numbers()
2-testing
应从管网获得get_tubes_numbers()
,并在Tube
类中进行瓶坯计算
但问题是get_tubes_numbers()
alwayes 返回空
值为 0根据我的理解,这是因为object u
是与object Oral
分开创建的,如图所示,对象在Visual Studio 01 02中的外观
但是Tube u;
应该是一个子类,子类应该共享基类中的相同变量 还是我对子类的理解是错误的? 请纠正我。
如何解决这个问题?
谢谢你的时间
错误出在测试类中。创建一个使用默认构造函数初始化的新对象u。这会导致程序具有类标准初始化的所有成员。所以get_tubes_numbers()
返回 0,因为tubes_numbers变量初始化为 0。
要解决此问题,您可以使用参数声明一个构造函数。在这种情况下,最好的选择是将基类作为参数传递PipeNetwork
并在构造函数中初始化所需的字段。
这是可以实现的构造函数示例:
Tube::Tube(PipeNetwork& base)
{
this->tubes_numbers = base.tubes_numbers;
}
然后你可以像这样修改代码:
void PipeNetwork::testing()
{
Tube u(*this);
u.length();
std::cout << "function works fine" << std::endl;
}
相关文章:
- 在c代码之间共享数据的最佳方式
- DLL共享数据的推荐方式是什么
- 简单使用 std::atomic 在两个线程之间共享数据
- 跨线程共享数据集与拆分每个线程的数据
- 如何实现共享数据的复制构造函数
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- PHP 中的实时仪表板,可从C++共享数据
- 如果两个线程调用同一个函数,但函数中的所有变量都是局部变量,我还需要担心线程之间共享数据吗?
- 在 API 和应用程序线程之间共享数据
- 加入线程后,是访问共享数据的数据竞赛吗?
- 在C 中,如何有效地在两个类之间共享数据
- 是否可以在本机C++模块之间共享数据
- 通知线程是否始终需要在修改期间锁定共享数据
- 共享数据文件映射
- 在线程之间共享数据
- 游戏中图形和物理引擎之间共享数据
- 我应该如何共享数据结构
- 如何找到Windows PC的共享数据/文件夹
- 在 Python 和 C++ 之间共享数据
- 如何将比较和交换用于任何共享数据结构的免等待互斥