繁体   English   中英

C ++对象指针练习

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM