[英]C++ Object pointer exercise
嗨,我是C ++的新手,我想学习C ++的对象指针和模式。 我有2节课,并尝试学习纪念品。 首先是经理,持有我对象的动态数组。
Manager.h:
#ifndef MANAGER_H
#define MANAGER_H
#include "MyObject.h"
class Manager
{
public:
Manager();
~Manager();
MyObject *objArray;
int _top;
MyObject topObj();
void addObj(MyObject newObj);
};
#endif // MANAGER_H
Manager.cpp:
#include "Manager.h"
Manager::Manager()
{
objArray = NULL;
_top = -1;
}
Manager::~Manager()
{
delete[] objArray;
}
MyObject Manager::topObj()
{
return objArray[_top]; //Will throw error if empty
}
void Manager::addObj(MyObject newObj)
{
MyObject *newArray = new MyObject[++_top]();
for(int i=0; i<_top; i++){
newArray[i] = objArray[i];
}
newArray[_top] = newObj;
objArray = newArray;
}
而在我的主要
int main(int argc, char **argv)
{
Manager *mptr = new Manager();
MyObject *optr = new MyObject();
mptr->addObj(*optr); //won't work
//changing object's properties
mptr->addObj(*optr);
return 0;
}
但这是行不通的,当我尝试使用addObj方法时,它停止工作,我在其中找不到任何错误,您介意告诉我我的错误在哪里吗?
函数Manager::addObj
第一行是错误的,您想这样做:
MyObject *newArray = new MyObject[++_top];
另外,不确定抛出错误的含义(在功能Manager::topObj
)。 如果您认为_top
为-1时将引发异常,那么您就错了。 您将收到访问冲突。 如果您要提供有关所遇到的错误(崩溃)的更多详细信息,那将是很好的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.