- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目标是输出与第一个程序相同的数据。第一个程序需要手动输入房号和房费。第二个(有问题的)程序要求它自动填充房间号和房间成本,这些房间号和房间成本被硬编码到 main 中的数组中。需要类“room”的默认构造函数来填充数组并添加 setter 函数来设置房间号和成本的值。整个程序的目标是创建数组,填充测试数据,然后列出有关房间的数据。程序 1(手动输入)- 这很好用;
#include<iostream>
using namespace std;
class room
{
int roomNo;
float roomCost;
public:
void GetData ();
void PutData ();
};
void room::GetData ()
{
cout << "\n\tEnter room number : ";
cin >> roomNo;
cout << "\n\tEnter room cost : ";
cin >> roomCost;
}
void room::PutData ()
{
cout << "\n\t\t\t" << roomNo << " \t|\t " << roomCost;
}
int main ()
{
int roomNo;
room roomList[10];
for (roomNo = 0; roomNo < 10; roomNo++)
{
cout << "\nEnter details of " << roomNo + 1 << " room" << endl;
roomList[roomNo].GetData ();
}
cout <<"\n*******************************************************************************";
cout << "\n\t\t\t Room Details";
cout <<"\n*******************************************************************************";
cout << "\n\t\t Room Number \t| Cost per Night";
cout << "\n\t\t--------------------------------------";
for (roomNo = 0; roomNo < 2; roomNo++)
roomList[roomNo].PutData();
getchar ();
getchar ();
}
第二个(有问题的)程序;
#include<iostream>
using namespace std;
class room
{
int roomNo;
float roomCost;
public:
room();
void PutData ();
};
room::room()
{
cout<<"\n\t\t\t"<<roomNo<<" \t|\t "<<roomCost;
}
void room::PutData ()
{
cout << "\n\t\t\t" << roomNo << " \t|\t " << roomCost;
}
int main ()
{
int roomNo[10] = {1,2,3,4,5,6,7,8,9,10};
float roomCost[10] = {100.00, 90.00, 85.50, 80.00, 80.00, 50.00, 50.00, 45.50, 45.50, 40.00};
room roomList[10]; //Statement 3 : Creating Array of 3 Employees
cout <<"\n*******************************************************************************";
cout << "\n\t\t\t Room Details";
cout <<"\n*******************************************************************************";
cout << "\n\t\t Room Number \t| Cost per Night";
cout << "\n\t\t--------------------------------------";
for (int roomNo = 0; roomNo < 10; roomNo++)
roomList[roomNo].PutData();
getchar ();
getchar ();
}
最佳答案
问题是 roomNo
和 roomCost
实际上从未为每个 room
实例设置任何值。该类不会自动从您在 main
中定义的数组中提取数据。
此外,
roomList[roomNo].PutData();
访问未初始化的数据:
void room::PutData ()
{
cout << "\n\t\t\t" << roomNo << " \t|\t " << roomCost;
}
(构造函数有同样的问题)
解决方案是用正确的数据初始化每个房间
。我建议使用构造函数:
room(int _roomNum, float _roomCost) : roomNo(_roomNum), roomCost(_roomCost)
{}
然后使用一个vector
来初始化(而不是room roomsList[10]
)
std::vector<room> rooms;
rooms.reserve(10);
for(size_t i = 0; i < 10; ++i)
rooms.emplace_back(roomNo[i], roomCost[i]);
关于c++ - 什么需要在构造函数中,什么需要在 setter 函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58864808/
因此,我需要获取在为其赋值时调用的 setter 的名称。像这样: var b = {}; var a = { set hey(value) { b[] = value; } } 我希望 se
我是 Android 编程的新手(~ 2 个月)有必要为几十个不同的变量设置 getter 吗? 例如—— //Yes I realise that this isn't 'dozens' publi
import Control.Lens import Control.Lens.TH data Foo = Foo { _bar, _baz :: Int } makeLenses ''
我有点困惑:我可以覆盖 setter/getter 但仍然使用 super setter/getter 吗?如果是 - 怎么办? 用例: class A { void set value(num
我有一个接收消息的应用程序。消息中存在可编辑的字段。当字段更改时,应将其保存到数据库中。不幸的是,setter 仅在 setter 的范围内更改给定字段的值。知道为什么会发生这种情况吗?这是 gett
C# 中有没有一种方法可以让 setter 从“某物”继承,这样每次为特定基类及其继承者调用 setter 时,我都可以运行一些代码? 我想做的是在我的基类上有一个名为 IsValid 的 bool
可能是一个我无法解决的非常简单的问题 - 我从 C# 开始,需要使用 getter/setter 方法向数组添加值,例如: public partial class Form1 : Form {
这两个属性实现有什么区别? public override string A { get { return "s"; } set { } } public override strin
是否可以使用 abc.abstractproperty 创建一个具体的 getter 但将 setter 抽象为每个继承类的不同。我为每个子类处理不同的 val 设置。 例如。 @abstractpr
我在某处看到类似下面的内容,想知道它是什么意思。我知道他们是getter和setter,但是想知道为什么字符串Type是这样定义的。谢谢你帮助我。 public string Type { get;
Public class Example { private int number; public Example(int number){ this.number =
假设我有这样的代码: public response MyMethod(Request req) { String id = req.getFirst().geId(); } 我已经模拟了主对
允许这样做: public int Age { get; set; } 但是应用程序是否为变量创建/分配空间?我经常这样做 private int age = 0; public int Age {
我有一个条件,我构造字符串 (finalValue) 的方式是基于我在输入中获得的非空值的数量。所以我想知道是否可以用一个不同的参数为字符串 (finalValue) 重载 setter 方法并根据我
例如,在这段代码中 var o = { set a(value) {this.b = value}, get a() {return this.b} } 是否有可能获得对 o.a 的 sett
我一直在努力了解 getter 和 setter,但没有深入了解。我读过 JavaScript Getters and Setters和 Defining Getters and Setters只是没
我想在我的类中添加一个 getter 和 setter。然而,setter 应该接收一个 querySelector,但 getter 返回一个新类型 pageSections。 我的问题是 gett
使用有什么好处: private var _someProp:String; public function set someProp(value:String):void { _somePr
当从域类调用它时,我想在我的 setter 中执行一些操作,而不是从 hibernate 中调用它时。此外,我正在使用 session 工厂,因此我无法使用 @PostLoad 来触发标志! 有人对此
人员类别: public class Person { private String firstName; private String lastName; public Pe
我是一名优秀的程序员,十分优秀!