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



我试图做一个类的一些功能,将与其他(继承)共同出现。这是我的主要类:

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被删除。

您应该在您的类中创建可以修改这两个变量的函数。尝试将它们插入到匿名结构中。这样它们就很容易被访问。

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

最后,您在几个函数声明中更改了识别。尽量确保你所创建的函数是友好的。否则,您将无法使用它们。

注。子类的子类,它们需要访问器函数。它们必须通过向上继承来改变指针。所以你会想让祖父类的子类有一个类来改变它的指针。你可以用一个函数来访问子节点,在孙子节点中。这样你就回到了函数里。这就是它们之间的关系

最新更新