如何为链接列表类实现单个项目?

时间:2019-01-22 23:50:13

标签: c++ class

我对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();

3 个答案:

答案 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() constconst char* Item::getValue() const函数。请注意,它的参数类型为void,因为您不会传递任何内容,它的返回类型为intconst 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();
}