Tôi đang cố gắng chuyển đổi một số lớp Python thành C++ nhưng có một số vấn đề. Tôi có một lớp cơ sở trong đó có một lớp (tĩnh) biến và một phương pháp mà trả về nó. Tôi cũng có một lớp được thừa kế mà đè (tĩnh) biến lớp học như vậy,C++ Các hàm thành viên thừa kế sử dụng các biến tĩnh
Trong Python:
class Base:
class_var = "Base"
@classmethod
def printClassVar(cls):
print cls.class_var
class Derived(Base):
class_var = "Derived"
d = Derived()
d.printClassVar()
đó in ra các biến lớp được thừa kế mong muốn, "nguồn gốc". Bất kỳ ý tưởng làm thế nào tôi có thể nhận được các chức năng tương tự trong c + +? Tôi đã thử nhưng cuối cùng nhận được biến lớp của lớp cơ sở.
Trong 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();
}
Hoặc, thay vì có một biến tĩnh gì cả, chỉ đơn giản là trở lại một hằng số, trong ví dụ này. Tuy nhiên, điều đó có thể không phù hợp với tất cả các chất tan. –