Đoạn mã dưới đây tạo ra một lỗi:C++ tham số lớp trừu tượng lỗi workaround
#include <iostream>
using namespace std;
class A
{
public:
virtual void print() = 0;
};
void test(A x) // ERROR: Abstract class cannot be a parameter type
{
cout << "Hello" << endl;
}
Có một giải pháp/cách giải quyết cho lỗi này khác/tốt hơn thay thế
virtual void print() = 0;
với
virtual void print() = { }
EDIT: Tôi muốn có thể vượt qua bất kỳ lớp mở rộng/triển khai lớp cơ sở A làm tham số bằng cách sử dụng nhiều hình thái (tức là A* x = new B() ; test(x);
)
Cheers
Lớp Abstarct theo định nghĩa sẽ không được tự khởi tạo. Đó là phương pháp cần phải được ghi đè bởi các lớp học có nguồn gốc. Chỉ cần tò mò, bạn đang cố gắng đạt được điều gì bằng cách làm điều này? – Mahesh
Tôi muốn làm một cái gì đó như A x = new B() và vượt qua bất kỳ lớp mở rộng/thực hiện A. Tôi nên đã xác định các câu hỏi tốt hơn tôi đoán. – Cemre
Trước khi cố gắng tìm ra giải pháp/giải pháp khác, chúng tôi cần hiểu vấn đề. Ý tưởng truyền một lớp trừu tượng như một tham số "theo giá trị" không có ý nghĩa gì cả. Bạn đang cố làm gì vậy? – AnT