使用构造函数初始化类中的指针

mama23n

Album在“ album.h”中有一个这样的课程:

#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“ song.h”中的一个类是这样的:

#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),我通过Album*为每个人初始化一个做到这一点,Song并且我在这里有一些错误:

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

谢谢

沙里雅尔

好吧,由于我的声誉我无法发表评论,因此我写了一个答案

您的Song类具有一个构造函数,该构造函数采用指向Album该类的指针,因此假定您具有以下代码:

Album* album = new Album();
Song song = new Song(album);

在第一行中,您将创建一个新专辑,在第二行中,您将使用最近创建的专辑创建一首新歌曲。

Album* album1 = song->album; // This is how you can access song's album

但是,请注意,每当new用于创建对象delete时,在使用完该对象以释放用于该对象的内存时,都应使用关键字。

因此,您的代码没有问题,或者至少我找不到任何问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用类构造函数初始化类对象的指针?

在构造函数中初始化静态函数指针

C ++-在构造函数中初始化指针数组

在C ++中,类是否可以包含指向构造函数中初始化的同一类的指针?

使用父类构造函数初始化列表在嵌套类字段中设置值

Java构造函数中类变量的初始化

在类构造函数中初始化const向量(C ++)

在构造函数或声明中初始化类字段?

在构造函数中初始化类字段的 Rust 方式

在类的构造函数中初始化ifstream变量

懒惰初始化中的类构造函数

在构造函数中初始化类成员变量

在没有构造函数的类中初始化变量

在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

如何为类创建智能指针并初始化类构造函数

在初始化列表中使用空构造函数初始化父类?

使用移动语义在构造函数中初始化类成员

Python:如何使用构造函数中的列表初始化类

如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

是否可以在构造函数中使用this.fieldname初始化基类中的字段?

如何使用实现父接口的类中的构造函数初始化接口类型的对象?

派生类中的变量可能尚未初始化(使用构造函数)

如何在C ++中使用构造函数(只是构造函数)在类中初始化大型私有数组?

在类声明或构造函数初始化器列表中初始化简单成员

无法在类构造函数范围内初始化指针

使用初始化列表在构造函数中初始化复杂映射

在struct中初始化函数指针

在构造函数中初始化日历