मैं गेटटर विधि के रूप में ओवरलोडिंग() द्वारा कक्षा में कुछ वाक्य रचनात्मक चीनी जोड़ना चाहता हूं। हालांकि, गेटर विधि एक गैर-प्रकार टेम्पलेट तर्क लेता है। एक साधारण परीक्षण मामले पर विचार करें:क्या मैं एक ओवरलोडेड ऑपरेटर को गैर-प्रकार का टेम्पलेट तर्क पास कर सकता हूं?
#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;
}
यह संकलित करता है तथा यदि foo<3>();
बाहर टिप्पणी की अपेक्षा के अनुसार चलता है। क्या सी ++ सिंटैक्स समर्थन करता है जो मैं करने की कोशिश कर रहा हूं, या क्या मुझे गेटटर के लिए नामित विधि के साथ छोड़ देना चाहिए?
मैं इसे अभी साबित नहीं कर सकता लेकिन मुझे यकीन है कि एकमात्र तरीका 'foo.operator() <3>() 'है, जो शायद इस उद्देश्य को हरा देगा। – PlasmaHH