Я новичок в 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();
}
}
Другие полезные советы:
РЕДАКТИРОВАТЬ:
Думайте о своем определении класса как о чертеже, а о члене — как о реальном объекте. Если бы мы хотели 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);
Трудно сказать, основываясь на том, что указано в вопросе, но вы должны знать, что C ++ делает все члены класса «закрытыми», если не указано иное. В этом случае:
cout << myartwork[0].art.setArtist("Tim");
потерпит неудачу по двум причинам: