Read-only archive. Login and posting are unavailable.
View Full Version : Tạo 1 vector chứa abstract class trong c++?
thichbuombuom
07-01-2020, 19:26
Các anh giúp em với.
Em có 1 abstract class tên là F.
có những class khác kế thừa F là A, B, C.
Giờ em muốn tạo 1 dạng dữ liệu như này.
vector mangF;
mangF.push_back(new A);
mangF.push_back(new B);
mangF.push_back(new C);
Có cách nào không ạ? Xin lỗi vì em không biết giải thích như nào cho rõ ràng.
thichbuombuom
07-01-2020, 20:09
Em tự làm được rồi. Cảm ơn các anh.
chaungoan
01-03-2020, 02:41
Làm sao đc vậy :) úp lên đây luôn đi.
Sent from Google Pixel 3 using vozFApp (http://bit.ly/vozfapp)
bobby_lee
02-03-2020, 15:21
Em tự làm được rồi. Cảm ơn các anh.
Chia sẻ cho anh em đi, tôi cùng có nhu cầu!
anhsayvimen
03-03-2020, 09:27
class Base
{
public:
virtual void DoSomething() = 0;
};
class DrivedA : public Base
{
public:
void DoSomething() override
{
cout << "test DoA\n";
}
};
class DrivedB : public Base
{
void DoSomething() override
{
cout << "test DoB\n";
}
};
int main()
{
std::vector vecAbstract;
vecAbstract.push_back(new DrivedA);
vecAbstract.push_back(new DrivedB);
for (auto i : vecAbstract)
{
i->DoSomething();
}
for (auto i : vecAbstract)
{
if (i)
{
delete i;
i = nullptr;
}
}
return 0;
}
Lớp trừu tượng sao tạo đc instance nhỉ, ko hiểu thím thớt làm kiểu gì. Dùng con trỏ như trên thì ok.
vothienan1234
05-03-2020, 12:56
Dùng vector chứa con trỏ trỏ tới Base là OK, xong cứ new ra push vào thôi
vBulletin® v3.8.0, Copyright ©2000-2026, Jelsoft Enterprises Ltd.