ostream& operator<< (ostream& os, const Foo &o)
, где Foo -- это ваш класс. Ну а если вам класс необходимо приводить к строковому представлению, то да, придётся вам реализовать метод руками, или же, что архитектурно более правильно, сделать отдельный класс и/или функцию для преобразования. Из урны с 1 пронумерованным шариком вынимают по одному шарику. Подсчитать общее количество ситуаций, когда номер хотя бы одного вынутого шарика совпадает с порядковым номером действия "вынимания"Далее действуй по индукции.
template <class T>
T* create_class(T* object = nullptr)
{
if (obj == nullptr) {
obj = new T();
if (obj == nullptr)
throw Exception("Can't create " + std::string(name_of<T>()) + " object");
}
obj->init();
return obj;
}
...
MyClass* mc = create_class<MyClass>();
delete mc;
макросы в С++
#include <iostream>
template<typename T>
auto sqr = [](T x)
{
return x * x;
};
int main()
{
std::cout << sqr<int>(3 + 0);
}
//...
class __lambda_3_12
{
public: inline int operator()(int x) const
{
return x * x;
}
//...
};
//...