I would like to make a class with several constructors of the same type. As this is not directly possible, is there a simple way to define readable "dummy" types such as the class could look like:
class Myclass
{
MyClass(Orange, std::string & name, float size);
MyClass(Apple, std::string & name, float size);
MyClass(Banana, std::string & name, float size);
}
I could define Orange, Apple and Banana as struct typedefs, but is there a more convenient way?
Thanks
The standard library does this in various places actually, for example std::piecewise_construct_t. Their standard is to provide...
struct something_t {};
constexpr something_t something = something_t();
Yes you can tag dispatch to overload the constructor arbitrarily:
struct Orange{};
struct Apple{};
struct Banana{};
class MyClass
{
MyClass(Orange, std::string & name, float size){}
MyClass(Apple, std::string & name, float size){}
MyClass(Banana, std::string & name, float size){}
};
int main()
{
std::string name("Fred");
MyClass myObject(Orange(), name, 10.0f);
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With