在 django 中实现抽象用户类,实现方式与 C++ 类似?

问题描述 投票:0回答:1

我很抱歉,但由于我对 py/django 并没有太多经验,所以我将在 C++ 类上进行并行。

我正在尝试创建一个具有两个子类 User_A 和 User_B 的用户抽象类,我想调用一个 User ,无论是 A 还是 be,而不区分它们。

相当于的 C++ 是:

User *new_user = new User_A;
new_user->send_user_data();

(send_user_data 是抽象函数)

但是从我发现这似乎不可能,所以我的下一个想法是创建一个 User 模型并有一个引用 User_A 或 User_B 的字段,但这似乎也不可能,因为我需要每个字段都有单独的字段,这不是我想要的。

我欢迎任何想法,谢谢。

c++ django django-models
1个回答
0
投票
class User
{
public:
    virtual ~User() {};
    virtual void send_user_data() = 0;
};

class User_A : public User {
public:
    void send_user_data() override {
        std::cout << "AAA\n";
    }
};

class User_B : public User {
public:
    void send_user_data() override {
        std::cout << "BBB\n";
    }
};

std::unique_ptr<User> makeUser(char id)
{
    switch(id) {
    case 'A':
       return std::make_unique<User_A>();
    case 'B':
       return std::make_unique<User_B>();
    }
    throw std::invalid_agument{"user id"};
}

void test()
{
   auto user = makeUser('A');
   user->send_user_data();
}
© www.soinside.com 2019 - 2024. All rights reserved.