【发布时间】:2023-03-12 08:57:02
【问题描述】:
我在“album.h”中有一个Album 类,如下所示:
#include "song.h"
class Album
{
public:
Album(string _id, string _title, string _singer, float _price, vector<Song> _songs) : id(_id), title(_title), singer(_singer), price(_price), songs(_songs), availableAlbums(10) {}
void add_song(Song s){ songs.push_back(s); }
void add_availableAlbums(int added){ availableAlbums += added; }
string get_id(){ return id; }
string get_singer(){return singer;}
private:
string id;
string title;
string singer;
float price;
vector <Song> songs;
int availableAlbums;
};
和“song.h”中的Song 类,如下所示:
#include "album.h"
class Song
{
public:
Song(string _numOfSong, string _title, string _singer, string _duration, float _price):
numOfSong(_numOfSong), title(_title), singer(_singer), duration(_duration), price(_price){}
private:
string numOfSong;
string title;
string singer;
string duration;
float price;
Album* album;
};
我们知道每个Song 都有一个Album(每个Song 必须指向它的Album),我通过为每个Song 初始化一个Album* 来做到这一点,我有一些错误是这里:
error C2061: syntax error : identifier 'Album'
error C2065: '_album' : undeclared identifier
error C2143: syntax error : missing ';' before '*'
error C2614: 'Song' : illegal member initialization: 'album' is not a base or member
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
谢谢
【问题讨论】:
-
我不确定我看到了什么问题。尝试这个。虽然我会为此使用智能指针。
-
“我怎样才能让每首歌都指向它的专辑?” 取决于你如何在
Album类中实例化你的Song实例,很可能是你在那里传递一个this指针。 -
在你的类声明之前在 Song.h 中声明专辑。
class Album; -
@mama23n 现在(使用更新的代码)你有一个循环包含。你也没有使用包含警卫。
标签: c++ class pointers constructor