在调用子类的子例程后,指针消失

时间:2015-10-09 18:07:39

标签: c++

我正在尝试使用一些与其他功能相同的功能(继承)。这是我的主要课程:

class SREngineJulius_father {
        protected:
            bool g2pInit;
            Recog *recog;
            Jconf *jconf;
        public:
            bool InitG2P(std::string dic, std::string model, int pos_process_flag=-1);
            bool Init_AM(std::string configStr);
    };

两个函数InitG2PInit_AM将在recogjconf中进行更新。此更新是子类的所有子对象必须具有的。

class SREngineJulius: public SREngineJulius_father
    {
        DFA_INFO *dfaInfo;
        WORD_INFO *wordInfo;
        WORD_INFO *wordInfo_init;

        Output lastResult;
        TListString lastCmdList;
        bool startNotifyCallbackLoop;
        bool terminate;
        bool pause;


        DFA_INFO* copy_dfa_info(DFA_INFO* dfa);
        DFA_INFO* create_commands_dfa_info();
        static void status_recready(Recog *recog, void *dummy);
        static void status_recstart(Recog *recog, void *dummy);
        static void output_result(Recog *recog, void *dummy);
        static void put_hypo_phoneme(WORD_ID *seq, int n, WORD_INFO *winfo);

        std::string ReplaceSpace(std::string &str);
        std::string RestoreSpace(std::string &str);

    public:
        bool InitG2P(std::string dic, std::string model, int pos_process_flag=-1);
        char* NotifyCallbackLoop(char *ficheiro_wav);//AXY5
        int SREngineJulius::Audio_Buffering(char* buffer_audio, int sizefile, int end_flag_, int flag_alocation);//AXY5
        void Callbacks();

    public:

        ~SREngineJulius();
        bool InitSREngine(std::string recoConfig);

        bool DynamicAddCommands(TListString &cmdlist, int startRecog = -1);
        bool DynamicAddCommands(std::string cmdlist, std::string sep=" ",  int startRecog = -1);
        void Release();

    };

所以问题是,当我调用子类的例程时,recogjconf将被删除。

1 个答案:

答案 0 :(得分:1)

你应该在你的班级中创建能够改变这两个变量的函数。尝试将它们插入匿名结构中。通过这种方式,他们可以轻松访问。

记住: 。 =参考 - > =指针

最后,您要在几个函数声明中更改recog。 尽量确保您所使用的功能中的功能友好。如果他们不是,你赢了'能够使用它们。

P.S。子类的子项,这些需要访问函数。他们必须通过向上继承来改变指针。所以你希望祖父母的子类有一个改变它的指针的类。你可以通过在孙子中拥有一个访问孩子的功能来做到这一点。那样你就会退回到这个功能中。这就是它的相关方式。