2012-03-02 28 views
5

Tôi có một lớp được gọi là AbstractRManagers mà tôi muốn kế thừa từ một lớp Singleton mẫu Singleton nhưng abstractRmanager cần phải là một lớp mẫu tôi đã đi qua một số mã lỗi lạ cung cấp không sử dụng, Ive đã cố gắng tìm kiếm nó nhưng không may mắn."Không thể sử dụng mẫu lớp không chuyên biệt làm đối số mẫu" nghĩa là gì?

template <class Type> 
class AbstractRManagers : public Singleton<AbstractRManagers> 
{ 

lỗi C3203: 'AbstractRManagers': không chuyên lớp mẫu không có thể được sử dụng như một mẫu đối số cho mẫu tham số 'Loại', dự kiến ​​ một loại thực

+0

"người quản lý ... trừu tượng ... singleton ..." Đôi mắt của tôi! Bạn có thể muốn 'class AbstractRManagers: public Singleton >'. –

+0

Có gì quá tệ với điều đó? "trừu tượng ... quản lý ... singleton ..." Đôi mắt của tôi! –

+0

Nghe có vẻ giống như một trò đùa định kỳ, chúng tôi có trong phòng chờ C++. –

Trả lời

10

AbstractRManagers đặt tên mẫu, không phải là loại - mẫu phải có thông số mẫu để trở thành loại. Ít nhất nếu tôi hiểu những gì bạn muốn, bạn có thể cần một cái gì đó như:

template <class Type> 
class AbstractRManagers : public Singleton<AbstractRManagers<Type> > 

... bắt đầu trông giống như CRTP đáng ngờ.

Sau đó, lưu ý bắt buộc: cơ hội là khá tốt mà bạn không thực sự cần hoặc muốn một singleton ở đây (hoặc gần như bất cứ nơi nào).

4

Nó phải public Singleton<AbstractRManagers<Type> >AbstractRManagers là mẫu bạn cần cung cấp loại bê tông để khởi tạo nó.

Các vấn đề liên quan