2011-12-19 38 views
9

Tôi có một lớp mẫu được gọi là RenderShader, tôi cũng có một lớp được gọi là Render. Tôi muốn có tất cả các trường hợp của lớp mẫu RenderShader làm bạn với Render. Ngoài ra người dùng được phép tạo các cá thể RenderShader của riêng mình để không thể liệt kê tất cả chúng trong tệp tiêu đề chính. Ví dụ:C++: Có thể kết bạn với tất cả các phiên bản của một lớp mẫu không?

template<class vertdef> 
class RenderShader 
{ 
public: 
..... 
}; 

class Render 
{ 
    friend class RenderShader; 
public: 
    .... 
}; 

Cú pháp "bạn bè RenderShader" sai, có cú pháp chính xác cho những gì tôi muốn làm không?

Trả lời

16
class Render 
{ 
    template<class vertdef> 
    friend class RenderShader; 
public: 
    .... 
}; 
+0

Làm việc trên 3 trong số 4 hệ thống tôi đang biên dịch mã của mình bằng: Nó hoạt động trên máy tính VS2010, VS2010 XBox360, Chrome Native-Client. Nó không hoạt động bằng cách sử dụng g ++ (được cài đặt với Dev-C++) cho GP2XWiz. – KPexEA

+0

@KPexEA: Cuối cùng tôi thấy, Dev-C++ vẫn đi kèm với GCC 3.4.x, khá gần với cổ tại thời điểm này. Thử cập nhật MinGW lên phiên bản hiện tại (4.6.x). – ildjarn

+0

@KPexEA Bạn đã chuyển tiếp khai báo lớp học theo khuôn mẫu chưa? (cùng cú pháp như khai báo bạn bè) –

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