Read-only archive. Login and posting are unavailable.

PDA

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