我是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;
}
答案 0 :(得分:1)
这里需要改变几件事:
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();
}
}
其他有用的提示:
修改强>
将您的类定义视为蓝图,将成员视为实际对象。如果我们想要一个具有多个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
两次,我们只定义了2个对象。然后,如果我们有一个艺术品对象:artwork foo
,我们可以这样做:
foo.art1_("Sam Arnold"s);
foo.art2_("Jonathan Mee"s);
答案 1 :(得分:-1)
很难根据问题中提供的内容来判断,但是你应该知道C ++会使所有的班级成员和#34;私人&#34;除非另有规定。在这种情况下:
cout << myartwork[0].art.setArtist("Tim");
会失败有两个原因: