数组和类?
我是新来的C + +和一个项目,我有一个类的实例数组,并在该类中,我有一个结构,我有一个函数。 如何在我的主代码块中使用该功能。我试过数组和类?
class artwork {
struct art {
// the struct art contains important information such as artist, title and medium.
private:
string artist;
public:
void setArtist(string values);
string getArtist();
};
void artwork::art::setArtist(string values) {
artist = values;
}
int main(){
artwork myartwork[500];
for (int i = 0; i < 500; i++) {
///-----------------------------------
///-----------------------------------
// below is where the error occurs? How do I reference setArtist?
///-----------------------------------
///-----------------------------------
cout << myartwork[0].art.setArtist("Tim");
}
system("pause");
return 0;
}
两几件事情需要在这里更改:
-
class artwork
需要art
- 类型的成员变量,成员变量需要被公之于众
- 成员变量需要具有比
art
不同的名称,因为该结构 - 您需要
artwork
您的代码也许应该解决的东西是这样的:
class artwork {
public:
struct art {
private:
string artist;
public:
void setArtist(string values){artist = values;}
string getArtist(){return artist;}
} art_;
};
int main(){
artwork myartwork[500];
for(int i = 0; i < 500; i++) {
myartwork[i].art_.setArtist("Tim");
cout << myartwork[i].art_.getArtist();
}
}
其他有用的提示:
- 传递对象通过构造参考
- 初始化,而不是初始化方法
- 喜欢做为数据聚合类型的构造函数赋值初始化
- 对数组大小的循环不是幻数
- 制作干将通过const引用返回
- 确认没有改变对象常量的状态
- 让成员不为对象常量
编辑的寿命改变方法:
将您的类定义视为蓝图,将成员视为实际对象。如果我们想要一个artwork
即有多个art
对象,在协作也许是的话,那么我们可以这样做:
class artwork {
public:
struct art {
private:
string artist;
public:
void setArtist(string values){artist = values;}
string getArtist(){return artist;}
};
art art1_;
art art2_;
};
需要注意的是,我们没有定义struct
两次,我们只定义了两个对象。然后,如果我们有一个艺术品对象,例如:artwork foo
我们可以这样做:
foo.art1_("Sam Arnold"s);
foo.art2_("Jonathan Mee"s);
我做了成员,它的工作完美。谢谢。我是C++新手。并且今天拿起一本书来练习。我不知道为什么我需要让它成为一个班级的成员,尽管? –
我做了一个编辑,试图帮助澄清类定义和对象之间的区别。如果您有任何其他跟进问题,我们可能会提出一个新问题,但尝试查看“有用提示”列表,其中有许多关键概念。 –
根据问题提供的内容很难说清楚,但您应该知道C++使所有类成员都是“私有”,除非另有说明。在这种情况下:
cout << myartwork[0].art.setArtist("Tim");
会失败的原因有两个:
- setArtist是不能公开访问(因为艺术品是私有的,但不要紧,SetArtist是公开的,你不能从外部得到它)
- COUT是最有可能期待 东西输出,所以setArtist(返回void)可能会 存在的问题
您应该先发布有效的代码。这会让你更容易理解。 – juanchopanza