c++私有属性可以在构造函数中使用,但在其他方法中会出现段错误
我正在调试一些代码,这让我很不舒服。
这是一个单例类,它在 getInstance 方法的这一行上给我带来了段错误,
cerr << _magazineList->_magazines.size() << endl;
我在构造函数中做了同样的事情。
MagazineList* MagazineList::_magazineList = NULL;
MagazineList::MagazineList()
{
//Initialize the vector of magazines
_magazines.push_back(Magazine("1", "Design Times", 20.0));
_magazines.push_back(Magazine("2", "UML News", 50.0));
cerr << this->_magazines.size() << endl;
};
MagazineList* MagazineList::getInstance()
{
if ( _magazineList == NULL ) {
_magazineList == new MagazineList;
cerr << "getInstance constructing" << endl;
cerr << _magazineList->_magazines.size() << endl;
}
cerr << "getInstance returning" << endl;
return _magazineList;
};
MagazineList::~MagazineList()
{
//Delete magazines in magazines vector
};
...
.h 文件
using std::vector;
class MagazineList
{
private:
int _numberOfMagazines;
vector<Magazine> _magazines;
static MagazineList* _magazineList;
MagazineList();
public:
static MagazineList* getInstance();
~MagazineList();
int getNumberOfMagazines();
void setNumberOfMagazines(int number);
Magazine* getMagazine(string magId);
void newMagazine();
void removeMagazine();
};
I'm debugging some code and this is throwing me a fit.
This is a singleton class that give me seg fault on this line in the getInstance method
cerr << _magazineList->_magazines.size() << endl;
I'm doing the same thing in the constructor.
MagazineList* MagazineList::_magazineList = NULL;
MagazineList::MagazineList()
{
//Initialize the vector of magazines
_magazines.push_back(Magazine("1", "Design Times", 20.0));
_magazines.push_back(Magazine("2", "UML News", 50.0));
cerr << this->_magazines.size() << endl;
};
MagazineList* MagazineList::getInstance()
{
if ( _magazineList == NULL ) {
_magazineList == new MagazineList;
cerr << "getInstance constructing" << endl;
cerr << _magazineList->_magazines.size() << endl;
}
cerr << "getInstance returning" << endl;
return _magazineList;
};
MagazineList::~MagazineList()
{
//Delete magazines in magazines vector
};
...
.h file
using std::vector;
class MagazineList
{
private:
int _numberOfMagazines;
vector<Magazine> _magazines;
static MagazineList* _magazineList;
MagazineList();
public:
static MagazineList* getInstance();
~MagazineList();
int getNumberOfMagazines();
void setNumberOfMagazines(int number);
Magazine* getMagazine(string magId);
void newMagazine();
void removeMagazine();
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这一行:
应该是:
This line:
should be:
_magazineList == 新杂志列表;
?_magazineList == new MagazineList;
?