class Base {
static std::vector<std::string> filter;
virtual bool check() {
if(std::find(filter....))
}
}
class Derived : public Base {
static std::vector<std::string> filter;
bool check() override {
if(std::find(filter....))
}
}
両方の静的変数がそれぞれの変換単位で定義されているものとします。基本クラスと派生クラスで同じ名前の静的メンバ変数
基本クラスと派生クラスに同じ名前を持つ静的な文字列のベクトルは、クラスごとに異なる値を持つ同じタイプの情報を持つために用意されています。非仮想的な関数の名前が隠れているのは良い考えではありません。静的メンバー変数にも同じことが当てはまりますか?もしそうなら、代替案は何か?
で仮想メソッドを使用することができます
あなたはおそらく*あなたは子クラスで 'filter'メンバーを持っている理由*あなた自身に尋ねることから始めなければなりません。なぜあなたは基本クラスの1つを使用できませんか?彼らはさまざまな目的のためですか?または、基本的に同じ(または同じ種類の)データを格納していますか? –
私は同じ種類のデータを保存するという質問に答えました!クラスのインスタンスではなくクラスの型にのみ依存する値なので、同じ値 – mkmostafa
はありません – mkmostafa