#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "MyClass constructor called" << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
void sayHello() const {
std::cout << "Hello from MyClass" << std::endl;
}
};
class MyClass2 {
public:
MyClass2(Poco::SharedPtr<MyClass>& x) {
std::cout << "MyClass2 constructor called" << std::endl;
x->sayHello();
}
~MyClass2() {
std::cout << "MyClass2 destructor called" << std::endl;
}
};
template <typename T1>
int test() {
MyClass2 x(new MyClass());
return 0;
}