媽
yen3: 家人跟我說,我會講話的第一句話是 "媽" XD
gb014388: 你確定後面沒有 "的" XD?
---
如果有,我從小就看的出潛力了...XD
Let's see how far we can go.
yen3: 家人跟我說,我會講話的第一句話是 "媽" XD
gb014388: 你確定後面沒有 "的" XD?
---
如果有,我從小就看的出潛力了...XD
written by yen3 in 3:32 下午 2 comments
#include <iostream>
#include <boost/shared_ptr.hpp>
class TestA;
void printTestA(TestA* a){
std::cout << a << std::endl;
}
void printTestA(boost::shared_ptr<TestA> a){
std::cout << a << std::endl;
}
class TestA{
public:
TestA():x(0){}
void test(){
printTestA(this);
printTestA(boost::shared_ptr<TestA>(this));
}
private:
int x;
};
int main(){
boost::shared_ptr<TestA> x(new TestA());
x->test();
std::cout << x.get() << std::endl;
}
這樣子的程式碼會出錯,正在想怎麼解決 XD
好像有解,下午來菸酒菸酒~
---
這個問題其實是 boost::shared_ptr 遇到 this 會發生什麼有趣的事 XD
大鳥 在 comments 中解釋了為什麼會錯,感謝他(感覺比自己寫的還清楚,我就不重寫了 XD) fr3@K 有提到 enable_shared_from_this 是最佳解
對我而言,我利用這個機會好好看了一下 Boost smart ptr,看完才發現,離自己夢想中的 memory management ,還是有一段距離,這個問題在 mailing list 有人討論,也有人提出解法,官方建議兩種解法,一種是加入 weak_ptr,在建立此 object 時,利用 weak_ptr 指向自己,另外一種是 fr3@K 提的,其實這兩種方法殊途同歸,只是後面有包裝,當然,就我自己而言,我實在是不想為了解決這個問題再繼承一個 XD,但是自己寫也沒有多好。
這個 library 的邏輯我猜想是如此,要嘛你就全用(使用 boost::make_shared<T> 建立更好),使用 shared_ptr<T> ...etc 來管理,然後從頭用到尾,weak_ptr 就會出現在這種時候(在我下筆的此刻,雖然我知道它的用法與目的,但是還是不知道使用時機為何),如果想要在 C++ 使用懶人的方法來用記憶體,我們必需更努力的學會這個 library XD,身為一個學生,不太知道外面世界怎麼樣,只能說,盡量學習嘍 XD
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/make_shared.hpp>
class TestA;
void printTestA(TestA* a){
std::cout << a << std::endl;
}
void printTestA(boost::shared_ptr<TestA> a){
std::cout << a << std::endl;
}
class TestA{
public:
//TestA():x(0){}
void test(){
printTestA(this);
printTestA(boost::shared_ptr<TestA>(weak_this));
}
static boost::shared_ptr<TestA> create(){
boost::shared_ptr<TestA> u = boost::make_shared<TestA>();
u->weak_this = u;
return u;
}
private:
int x;
boost::weak_ptr<TestA> weak_this;
};
int main(){
boost::shared_ptr<TestA> x = TestA::create();
x->test();
std::cout << x.get() << std::endl;
}
written by yen3 in 12:18 下午 4 comments
tag: programming
昨天開始寫回顧,卻很難寫出隻字片語,我的回憶總是存在於片段,也睡不太著,邊睡邊想出我想要寫的架構為何,希望今天能寫出比較完整的東西。
---
回顧。
written by yen3 in 9:49 上午 0 comments
tag: life
不知道自己己經頹廢多久了,從今天開始復工吧 ... 積極休息後總是要更積極的前進。
---
一堆事可以做了 XD
written by yen3 in 4:14 下午 0 comments
tag: life