上传时调用派生类方法

时间:2015-11-29 21:18:21

标签: c++ class inheritance override upcasting

现在我有一个如下的层次结构(Parse.User表示父的)

 public static class DisplayFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

    cPPreference cPBg;
    cPPreference cPFt;
    cPPreference cPTm;
    cPPreference cPLg;
    ListPreference colorThemeList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.display_preferences);

        cPBg = (cPPreference) getPreferenceScreen().findPreference("ambilBg");
        cPFt = (cPPreference) getPreferenceScreen().findPreference("ambilFt");
        cPTm = (cPPreference) getPreferenceScreen().findPreference("ambilTm");
        cPLg = (cPPreference) getPreferenceScreen().findPreference("ambilLg");

        /**
        * When this list changes I need to exectue a method
        */
        colorThemeList = (ListPreference) getPreferenceScreen().findPreference("colorTheme");
        colorThemeList.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                ThemeHandler.setTheme(cPBg, cPFt, cPTm, cPLg, colorThemeList.getValue());
                return true;
            }
        });

    }


    @Override
    public void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);                
    }

    @Override
    public void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences()
                .unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {         
        setSummarys();
    }
}

我有一个函数替换,它在LSystem中定义如下,给出了->LSystem -> DLSystem -> Tree -> MonopodialTree -> TernaryTree LSystem使用的最小实现。

DLSystem

接下来,Treevirtual void substitute(Symbol s, std::vector<Symbol> &string); 会覆盖替代定义。

问题出现了,因为我希望有一个MonopodialTree(同时具有Monopodial和Ternary)并通过它迭代调用它们中的每一个。

但是,他们都会调用TernaryTree的替代函数而不是他们自己的替代函数,我缺少什么?

0 个答案:

没有答案