2014-10-17 13 views
5

Tôi muốn xác định loại con trỏ hàm bằng cách sử dụng mẫu. Tuy nhiên, VS 2013 tôi rằng 'một mẫu typedef là bất hợp pháp'. Tôi đang cố gắng viết một cái gì đó như thế này:lỗi C2823: mẫu typedef là bất hợp pháp - hàm con trỏ

template<typename SD> 
typedef void(*FuncPtr)(void *object, SD *data); 

Thật không may điều này không biên dịch. Tôi muốn giữ điều này ngắn gọn. Về cơ bản tôi cần định nghĩa một kiểu cho một con trỏ hàm, đối số của nó là một lớp mẫu.

+0

Thêm một thẻ ngôn ngữ (như C++) để đúng người có thể tìm thấy ques này sự. – CandiedOrange

+0

Xong, cảm ơn bạn! – alias5000

Trả lời

7

Kể từ C++ 11, bạn có thể sử dụng từ khóa using cho một hiệu ứng rất giống typedef, và nó cho phép các mẫu:

template<typename SD> 
using FuncPtr = void (*)(void*, SD*); 

Trước đó, bạn phải tách các mẫu từ typedef:

template<typename SD> 
struct FuncPtr 
{ 
    typedef void (*type)(void*, SD*); 
}; 

(và tên loại là FuncPtr<U>::type thay vì chỉ FuncPtr<U>)

+0

Cảm ơn bạn đã cho mẹo! – bvj

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