C++ 两个独立的类不';t共享相同的数据c++;
我有两个不同的类C++ 两个独立的类不';t共享相同的数据c++;,c++,class,oop,C++,Class,Oop,我有两个不同的类PipeNetwork.hppPipeNetwork.cpp和Tube.hppTube.cpp 哪一类管道:公共管网 PipeNetwork中的以下功能 void PipeNetwork::testing() { Tube u; u.length(); std::cout << "function works fine" << std::endl; } 最后在main int main()
PipeNetwork.hpp
PipeNetwork.cpp
和Tube.hpp
Tube.cpp
哪一类管道:公共管网
PipeNetwork中的以下功能
void PipeNetwork::testing()
{
Tube u;
u.length();
std::cout << "function works fine" << std::endl;
}
最后在main
int main()
{
PipeNetwork Oral;
Oral.InputData("Input.txt");
Oral.testing();
return 0;
}
应该发生什么:
1-InputData
获取一些数据并将其存储在PipeNetwork
类中,包括get\u tubes\u numbers()
完成得很好
2-测试
应从管道
类中的管网和预制件计算中获取获取管道编号()
但是问题是get\u tubes\u numbers()
总是返回空值0
根据我的理解,这是因为objectu
是与object-Oral
分开创建的,如图所示
但管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;
}
void PipeNetwork::testing()
{
u形管(*此);
u、 长度();
std::难道我不明白。你用Tube u;
创建了一个新对象,你很惊讶它与你的PipeNetwork
对象无关?你能用英语解释一下这个新的Tube
对象应该如何与你的PipeNetwork
交互,或者你的测试方法的总体目标是什么吗?请用or来回答您的问题,这就是为什么我要发布我的问题,我认为Tube u;
将是一个子类,这意味着共享来自基类PipeNetwork
的相同变量。如果我是oop概念的新手,请纠正我的错误。我创建了测试来检查长度结果dingI是oop概念的新手——这个问题与oop无关。您创建了一个局部变量u
,当该函数返回时,该局部变量就不多了。这与u
是int
、double
或任何其他类型没有什么不同。您能分享类似的示例吗?我添加了一个示例
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;
}