Tôi cố gắng để sử dụng mẫu cho chức năng gọi điều hành quá tải như trong chương trình sau đây:C++ mẫu cho hàm operator gọi
#include <stdio.h>
struct Apple
{
template <typename tn> tn value();
template <typename tn> tn operator()();
};
template <> int Apple::value()
{
return 10;
}
template <> int Apple::operator()()
{
return 10;
}
int main()
{
Apple apple;
printf("Value : %d\n", apple<int>());
printf("Value : %d\n", apple.value<int>());
return 0;
}
Trong khi gọi hàm giá trị trong in thứ hai không hiển thị bất kỳ lỗi người điều khiển chức năng cuộc gọi trong bản in đầu tiên hiển thị lỗi expected primary-expression
. Tôi không biết mình đang làm gì sai. Bất cứ ai có thể giúp tôi biết vấn đề cảm ơn trước.
câu trả lời tuyệt vời đã giúp cảm ơn bạn. tôi có thể biết tại sao cuộc gọi không thể được suy ra – Dinesh
@Dinesh, cách duy nhất để trình biên dịch suy ra một loại là khớp với nó với một số biểu thức. Trong trường hợp của bạn, tại trang web cuộc gọi, không có biểu thức nào khớp với. – vsoftco
có nhưng tôi đã xác định rõ ràng loại trong cả hai trường hợp và tôi không thể hiểu tại sao lỗi chỉ trong hàm gọi quá tải của nhà điều hành – Dinesh