gpt4 book ai didi

c++ - 如何在类构造函数中初始化动态分配的数组

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:00 25 4
gpt4 key购买 nike

我们应该为每个索引分配一个空字符串,然后替换在函数 addB() 中有一个值。我对此很陌生,所以遇到了很多麻烦。

class A //in a.h

{

private:

B * b;

int maxNumberOfItems;

//...

public:

A();

~A();

void addB(const B & something);

};

//in a.cpp

A::A()

{

maxNumberOfItems=10;
for(int i=0;i<maxNumberOfItems;i++)
{
b[i]="";//has to be an empty string, I am getting a segmentation fault
}

}

A::~A(){/*...*/}

//...

//in b.h

class B
{

private:

string name;

int price;

public:

void setName(string);

string getName();

void setPrice();

int getPrice(int);

B & operator=(string &);

};

//in b.cpp

B & B::operator=(string & a){name = a;price = 0; return *this;}
//...

这只是显示我的问题的程序片段

最佳答案

你应该在使用动态数组之前分配内存。我已经为b分配了内存

class A //in a.h

{

private:

B * b;

int maxNumberOfItems;

//...

public:

A();

~A();

void addB(const B & something);

};

//in a.cpp

A::A()

{
maxNumberOfItems=10;
b = new B[maxNumberOfItems];

for(int i=0;i<maxNumberOfItems;i++)
{
b[i]="";//has to be an empty string, I am getting a segmentation fault
}

}

A::~A(){/*...*/}

//...

//in b.h

class B
{

private:

string name;

int price;

public:

void setName(string);

string getName();

void setPrice();

int getPrice(int);

B & operator=(string &);

};

//in b.cpp

B & B::operator=(string & a){name = a;price = 0; return *this;}

关于c++ - 如何在类构造函数中初始化动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com