【发布时间】:2020-04-24 04:34:21
【问题描述】:
我的代码需要一些帮助,我正在为即将到来的考试做准备。
我有 3 个类的代码:Package、Person 和 Courier(从 Person 继承)。 然后我在主包中有数组。 现在我被困在某个点上,我有'Courier k1(p, p+3);'这意味着我需要通过指针将这个 Courier 包从 p 分配到 p+3 。我的问题是我不知道如何通过任何类的方法访问我需要的所有包。 简单的代码示例:
class Package
{
string _address;
float _value;
};
class Person
{
string _name, _lastname;
};
class Courier:public Person
{
vector < Package > tab;
}
int main()
{
Package p[] = {
Package("Dabrowskiego 33", 123.00),
Package("NMP 12", 40.00),
Package("Armii Krakowej 4", 30.00),
Package("Andersa 6", 51.00),
Package("Kukuczki 13", 12.00),
Package("Skrzyneckiego 5", 40.00),
};
Courier k1(p, p+3);
cout << k1.value() << endl;
return 0;
};
上面的代码只是示例,main 中的代码是不可更改的,因为它是来自老师的基础。 我尝试在 Courier 中使用计数包裹数量的方法,然后像这样将值添加到向量中
for(int i=0;i<amount;i++)
{
tab.push_back(Package(*(p+i)));
}
我不知道这是否是一个好方法,甚至可以做到,但是我不知道如何通过 value() 函数显示值。
问候
编辑://
感谢大家的帮助,我设法结束了我的程序,一切似乎都正常。但我有一个疑问。
Courier k2;
cout << "---- 8 ----" << endl;
cout << k2.value() << endl;
{
Courier k3(k1);
cout << "---- 9 ----" << endl;
cout << k3.value() << endl;
k2 = k3;
cout << "---- 10 ----" << endl;
cout << k2.value() << endl;
k1 = k1 + p[4];
k1 = k1 + p[5];
cout << "---- 11 ----" << endl;
cout << k1.value() << endl;
}
cout << "---- 12 ----" << endl;
cout << k2.value() << endl;
现在我很担心。现在的值如下所示:
- 8 - 返回 0(作为我的默认构造函数,如果没有值,则将值设置为 0)
- 9 - 将所有值相加后返回 193
- 10 - 返回与上面相同,因为它是从 k3 分配的
- 11 - 返回 245,因为它添加了 2 个值
- 12 - 返回 193。
现在,它应该像这样工作还是值 8 和 12 应该相同(等于 0)并且只有括号内的值应该改变?
【问题讨论】:
-
您需要向
Courier添加一个构造函数,它接受一对指向Package的指针,并使用它们来初始化tab成员变量。您还需要添加一个value函数,并执行value函数应该做的任何事情。 (打印出所有包裹的总价值?) -
请提供minimal reproducible example,其中包括您的尝试。目前还不清楚底部代码 sn-p 相对于所有其他代码的放置位置。
-
@MartinBonnersupportsMonica 您的意思是“返回所有包裹的总值”。 (我认为“return”和“print”之间的区别有时会让初学者感到困惑。)
-
@aschepler Arwk!是的,我的意思是返回。我已经不是初学者了,真的不应该犯那样的错误!
-
@MartinBonnersupportsMonica 是的,我认为这只是一个失误。我只是在说明为什么我认为它值得评论,而不是仅仅为了它自己而吹毛求疵。
标签: c++ arrays pointers vector