我有以下构造函数:

    Timing::Timing():
    _numMes(INIT_NUMMES),_msgs(new allMSgs*[NUMBER_OF_MSGS])
    {

        cout<<"build timing OK\n";
    }

allMSgs是一个结构:
   typedef struct AllMSgs
   {
            double msg;
        Agent* dedicatedTo;
   }allMSgs;

它的声明是这样完成的:
        allMSgs** _msgs;

但是当我尝试达到这样的数组中的字段时:
     _msgs[loc]->dedicatedTo=agent->getPointsTo();

我遇到了细分错误。

NUMBER_OF_MSGS为1000

loc为0,1,2 ....(小于1000);

请帮忙

最佳答案

您已经建立了一个指针数组,但尚未将它们设置为指向任何有效的指针。您要么需要将其更改为简单:

allMSgs* _msgs;

和:
new allMSgs[NUMBER_OF_MSGS]

或为allMSgs数组中的每个指针调用new。

更好的是,尽管您可以只使用std::vector或其他容器以及std::vector<allMSgs> _msgs;,但在大多数情况下,可以像使用数组一样使用它。您也可以使用大小来初始化它。

07-27 23:07