Tôi muốn thêm một số đường cú pháp vào một lớp bằng cách nạp chồng() làm phương thức getter. Tuy nhiên, phương thức getter lấy một đối số mẫu không kiểu. Xem xét một trường hợp thử nghiệm đơn giản:Tôi có thể chuyển một đối số mẫu không kiểu cho một toán tử bị quá tải không?
#include <iostream>
class Foo
{
public:
template <int i> void get()
{
std::cout << "called get() with " << i << std::endl;
}
template <int i> void operator()()
{
std::cout << "called overloaded() with " << i << std::endl;
}
};
int main()
{
Foo foo;
foo.get<1>();
foo.get<2>();
foo<3>(); // error: no match for ‘operator<’ in ‘foo < 3’
return 0;
}
Việc biên dịch và chạy như mong đợi nếu foo<3>();
được nhận xét. Có cú pháp C++ hỗ trợ những gì tôi đang cố gắng làm, hay tôi nên từ bỏ và gắn bó với một phương thức được đặt tên cho getter?
Tôi không thể chứng minh điều đó ngay bây giờ nhưng chắc chắn rằng cách duy nhất là 'foo.operator() <3>()', có thể sẽ đánh bại mục đích. – PlasmaHH