'C++ method for non class or struct
Is there any way in C++ to have a method for variable which is not a class or struct? Suppose I have a defined type dogs for convenience.
using dogs = std::unordered_map<std::string, dog>;
dogs d;
Now, what I want to achieve is to have a method, e.g. print() which operated on the dogs type variable d.
d.print();
Solution 1:[1]
Your d.print() means invocation of the method print that std::unordered_map<std::string, dog> actually hasn't. You can't add new methods to an existing class in C++ in contrast to e.g. Python because C++ is a statically typed language. The only way to add new method to a class is creating a new class that inherits to the interested class like
struct dogs : std::unordered_map<std::string, dog>{
void print();
};
... // define your dogs::print();
void foo()
{
dogs d;
d.print(); //now you can use it
}
Solution 2:[2]
Is there any way in C++ to have a method for variable which is not a class or struct?
You can have free functions which don't require a class. Methods a.k.a. member functions can be defined only for classes.
std::unordered_map<std::string, dog>
std::unordered_map<std::string, dog> is in fact a class. And it has member functions. But you may not define more member functions for this class, nor other classes from the standard library.
You could define a free function such as this:
void print(const std::unordered_map<std::string, dog>&);
Which you can call like this:
print(d);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dmitry |
| Solution 2 | eerorika |
