Biên dịch trên C++ 03, tôi đã cố gắng viết một hàm mẫu thử trả về hàm con trỏ tới thành viên của hàm thành viên trả về int và nhận hai đối số nổi:Trả về hàm con trỏ thành thành viên (không có typedef)
template<typename TemplateClass>
int (TemplateClass::*)(float,float) Testtest(TemplateClass &A)
{
return &TemplateClass::Function;
}
Nhưng tự nhiên, bất kể biến thể nào của cú pháp hàm con trỏ thành thành viên tôi sử dụng, trình biên dịch đều than phiền lỗi khởi tạo. Typedef, mặc dù nó hoạt động với các lớp đã biết, vì các lý do rõ ràng (đặt tên xung đột), sẽ không chấp nhận các đối số lớp mẫu cho các lớp mà tôi không thể biết trước khi có khả năng sử dụng cùng một hàm.
Cách non-typedef nào có chức năng này để biên dịch và trả về hàm con trỏ thành thành viên?
Vâng, tôi chưa bao giờ đoán được câu hỏi đầu tiên. Nó quá ... phức tạp. C + +, tại sao bạn làm điều này ?! – c1646091
@ c1646091 Cú pháp đó được kế thừa từ C. – emlai
C, tại sao bạn làm điều này ?! – c1646091