いくつかのPythonクラスをC++に変換しようとしていますが、問題があります。クラス(静的)変数とそれを返すメソッドを持つBaseクラスがあります。私はまた、そうようなクラス(静的)変数をオーバーライドする派生クラスは、PythonでC++静的変数を使用する継承メンバ関数
た:
class Base:
class_var = "Base"
@classmethod
def printClassVar(cls):
print cls.class_var
class Derived(Base):
class_var = "Derived"
d = Derived()
d.printClassVar()
所望の派生クラスの変数をプリントアウト、「由来します」。どのように私はCで同じ機能を得ることができる任意のアイデア+ +?私は試しましたが、最終的にはBaseクラスのクラス変数を取得します。
class Base
{
public:
void printStaticVar() {cout << get_string() << endl;}
static string s_var;
virtual string const& get_string() { return Base::s_var; }
};
string Base::s_var = "Base";
class Derived : public Base
{
public:
static string s_var;
virtual string const& get_string() { return Derived::s_var; }
};
string Derived::s_var = "Derived";
void main()
{
Derived d;
d.printStaticVar();
}
注printStaticVar
が静的であってはならないこと:C++
class Base
{
public:
static void printStaticVar(){cout << s_var << endl;}
static string s_var;
};
string Base::s_var = "Base";
class Derived : public Base
{
public:
static string s_var;
};
string Derived::s_var = "Derived";
void main()
{
Derived d;
d.printStaticVar();
}
または、代わりにすべての静的変数を持つのは、単にリターンこの例では定数です。しかし、それはすべてのsolutonsに適していない可能性があります。 –