我对C ++还是很陌生,所以我想就过去几个小时一直在研究的家庭作业问题寻求帮助。问题的标准是这样的:
在下面的问题中,我们将实现“项目”列表。在这个问题中,我们将为此创建一个Item类。
为了使事情变得有趣,我们将为Item提供两个组件:(1)一个整数键和(2)一个文字字符串值。
您的课程必须包括:
[2.5分]键(int)和值(const char *)的私有成员变量。不要为字符串分配空间-只需保留一个指针即可。
[2.5分]一个公共构造函数,用于初始化键和值。同样,不要复制传入的字符串,只需保存指针即可。
[2.5分]读取键和值的公共方法-例如,getKey(),getValue()。
[2.5分]一个公共副本构造函数。
我对如何实现第三和第四要点非常困惑。如果有人可以告诉我我做错了什么以及如何实现这些部分,则在下面附加了我的代码。我感到困惑的原因是因为我不确定他们的设计意图。
videoBG=findViewById(R.id.videoView);
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.underwater1);
videoBG.setVideoURI(uri);
videoBG.start();
答案 0 :(得分:2)
我认为您想要这样的东西:
int getKey() const { return key; }
您的复制构造函数将如下所示:
Item(const Item &other) : key(other.key), value(other.value) { }
而且我不确定哪些编译器(如果有的话)接受大写“ P”的“ Private:”和“ Public:”。另外,正如drescherjm所提到的,“ new”不应用作变量名。它是C ++运算符。
答案 1 :(得分:1)
您需要实现int Item::getKey() const
和const char* Item::getValue() const
函数。请注意,它的参数类型为void
,因为您不会传递任何内容,它的返回类型为int
或const char*
,具体取决于您要使用的参数类型得到。
int getKey() const {
return key;
}
就这么简单。就像下面的Christopher PiszAll所述,关键字const
表示该函数没有更改任何成员。该函数要做的就是返回内部成员key
。现在对value
做同样的事情。
但是,有经验的程序员会避免使用“ getter”,因为它破坏了封装。最好的程序员会创建可操纵其成员的函数。由于这是家庭作业,因此您应该按照老师的意愿去做。
而且,正如评论者所提到的,永远不要使用new
作为参数名称。这是用于分配新内存的保留关键字。
答案 2 :(得分:-1)
第三点非常简单,您想要的方法可以读取键和值。根据他们想要准确返回的内容,您应该可以说,有一些大致可以做到的方法getKey:
int Item::getKey() {
return key;
}
它读取并返回密钥。与getValue()方法相同的想法。
对于复制构造函数,这个想法非常简单-将另一个项目的值复制到新项目中。
Item(const Item &i) { //Don't call it "new"
key = i.getKey()
value = i.getValue();
}