我很抱歉,但由于我对 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 的字段,但这似乎也不可能,因为我需要每个字段都有单独的字段,这不是我想要的。
我欢迎任何想法,谢谢。
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();
}