std::enable_shared_from_this<クラス名>を継承して,
shared_from_this()を使用して取得する・・・であっているのかな・・・.
#include <iostream>
#include <memory>
class Student : public std::enable_shared_from_this<Student>
{
public:
Student(std::string name, int first_score, int second_score)
: name_(name), first_score_(first_score),
second_score_(second_score) {}
~Student() { std::cout << "delete " << name_ << std::endl; }
void printScore() {
std::shared_ptr<Student> ptr = shared_from_this();
std::cout << name_ << " : "
<< first_score_ + second_score_ << std::endl;
}
std::shared_ptr<Student> getSharedPointer() {
// これだとやばい・・・
// return std::shared_ptr<Student>(this);
return shared_from_this();
}
private:
std::string name_;
int first_score_, second_score_;
};
int main()
{
auto student = std::make_shared<Student>("Miyanaga", 5200, 24000);
auto it = student->getSharedPointer();
it->printScore();
sleep(1);
return 0;
}
0 件のコメント:
コメントを投稿