スマートポインタの有効な使い道をいまだに理解できずにとりあえず使ってみる。
(きっとメモリリークに苦しむレベルになるまで進まないと分からないんだろうな(´・ω・`))
とりあえず、いろんなクラスに渡すオブジェクトをshare_ptrにしてみたり。
テンプレートが使われてるやつはエラーが分かりづらい(;^ω^)
ちゃんと出力読めばわかるんだけども、大量の行のエラーで攻めてくるし。
make_sharedとかコンストラクタの引数の型の順番間違えても赤線引いてくれないし(;´・ω・)
まぁVisualStudioが優秀だからなんとかなってる感。
ヘッダファイルも小分けせず関連したものはまとめて宣言したほうがいいということが本に書いてあって試してみたら、
こんなクラスねぇよっていうエラーが消えてよかった。こういうのも赤線でないから困る(><)
マメにインクルードすりゃいいってもんじゃないから難しい。
スマートポインタ関連使ってみたり
Re: スマートポインタ関連使ってみたり
スマポはこういうのでエラー食らって,しばらく「???」ってなるから困る.
C#の参照型って,全部強制的にshared_ptr使わされるみたいな勢いですよね.
C#さわりはじめたとき 「これ循環参照したら死ぬの?」 と不安にかられました.
(どうやらC#のGCは参照カウント方式ではないから大丈夫らしい.)
class MyClass
{
public:
unique_ptr<MyClass> Create( ... )
{
...
return make_unique<MyClass>( a ); //ここでエラー^^
}
private: //コンストラクタはprivate
MyClass( int a ){}
};
C#さわりはじめたとき 「これ循環参照したら死ぬの?」 と不安にかられました.
(どうやらC#のGCは参照カウント方式ではないから大丈夫らしい.)
Re: スマートポインタ関連使ってみたり
ほんとだ、アクセスできないって言われる(;^ω^)?
プライベートなコンストラクタはシングルトンのパターンぐらいでしかみたことないからよく分からない・・・Σ( ̄ロ ̄lll)
C#の参照型では参照渡しと複製の違いを理解してなくて悩んだなぁ。
そんなレベルだから循環参照の心配まで気が回らず(´・ω・`)
プライベートなコンストラクタはシングルトンのパターンぐらいでしかみたことないからよく分からない・・・Σ( ̄ロ ̄lll)
C#の参照型では参照渡しと複製の違いを理解してなくて悩んだなぁ。
そんなレベルだから循環参照の心配まで気が回らず(´・ω・`)
Re: スマートポインタ関連使ってみたり
MyClassのコンストラクタがprivateだから
アクセスできないのはエラー食らってみれば当然の話なんだけども,
じゃあこれってどうすべきなんだろう?
まぁmake_uniqueとか使わずにその場(Create()内)でnewしたものを返せばエラーは即無くなるんだけども,
せっかく存在しているmake_uniqueとかいうのを使いたいじゃん,っていう…
アクセスできないのはエラー食らってみれば当然の話なんだけども,
じゃあこれってどうすべきなんだろう?
まぁmake_uniqueとか使わずにその場(Create()内)でnewしたものを返せばエラーは即無くなるんだけども,
せっかく存在しているmake_uniqueとかいうのを使いたいじゃん,っていう…
Re: スマートポインタ関連使ってみたり
> ヘッダファイルも小分けせず関連したものはまとめて宣言したほうがいい
個人的には,そこそこバラけた形で書くスタイル.
最初は「こんなん,一個のヘッダっしょ」とか思ってても,後からその一部だけをincludeしたくなるという経験が割とあるので.
最初からばらけているのをくっつけるのは簡単だけど,
逆に1個になっちゃってるのをバラすのは面倒.
個人的には,そこそこバラけた形で書くスタイル.
最初は「こんなん,一個のヘッダっしょ」とか思ってても,後からその一部だけをincludeしたくなるという経験が割とあるので.
最初からばらけているのをくっつけるのは簡単だけど,
逆に1個になっちゃってるのをバラすのは面倒.
Re: スマートポインタ関連使ってみたり
インクルードガードですべて解決できればいいんですけどねぇ・・・。
私が作ってるのはレトロ風ゲームで、シンプルなオブジェクトの使いまわしばっかりだから個別にするかどうかあまり気にならないのかも。
私が作ってるのはレトロ風ゲームで、シンプルなオブジェクトの使いまわしばっかりだから個別にするかどうかあまり気にならないのかも。