[過去ログ] C++相談室 part165 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
131: デフォルトの名無しさん (ワッチョイ 0644-M+UX) [sage] 2024/01/04(木) 23:21:36.86 ID:oZapr/U70(2/2) AAS
>>127127(2): デフォルトの名無しさん (ワッチョイ e95f-pFp4) [sage] 2024/01/04(木) 21:53:05.60 ID:ACseOt7T0(2/2) AAS
>>124
こんな感じです?
struct base_ {
virtual base_* clone (void *p) = 0;
virtual ~base_() {};
};
template <typename F>
struct derived_ : base_ {
F f_;
derived_(F f) : f_{ std::move(f) } {}
base_* clone (void *p_buf){
return new(reinterpret_cast<derived_<F>*>(p_buf))(f_);
}
};
A(A& src) {
p_ = src.clone((void*)buf);
};
cloneの中ってplacement newでcopy constructorを呼ぼうとしてるんだよな?
いちおうあってるけどundefined behaviorまみれ
203(1): ◆QZaw55cn4c (ワッチョイ 3555-LgJ8) [] 2024/02/03(土) 10:15:36.86 ID:21sfApha0(2/2) AAS
>>198>値で持てるところは単に値で持つほうがC++っぽいと思う
時代の流れを感じさせるお言葉です。なにせ K&R1 で育った世代なので(K&R1 では構造体の実体渡しはできず、かならずポインタで渡さなければならなかった)。
C++ においても、コピコンを働かせないために const & を多用する毎日です
256(2): デフォルトの名無しさん (ワッチョイ eba6-IqbK) [sage] 2024/02/12(月) 15:42:15.86 ID:NdUIQhSh0(1) AAS
ファイル名に年月が使えないの困ります。
2024/02/11_データ.txt
とか
349: デフォルトの名無しさん (ワッチョイ fee5-FHn0) [sage] 2024/06/08(土) 01:03:51.86 ID:k3Jnk/Aj0(1) AAS
静的解析で文句言われる可能性あるからやめときな
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
543: デフォルトの名無しさん (ワッチョイ b163-+nMC) [sage] 2024/11/09(土) 19:08:22.86 ID:djyKk80a0(1) AAS
昔std::vector<T>とかstd::stringを前のコンパイラでビルドしたDLLに渡したら以下略
やっぱコンパイラを混ぜるときはextern "C" な関数にプリミティブな型のみを渡すインターフェース設計にするパティーンが安牌
文字列とか渡したかったらあくまでchar[]にすべき……
574: デフォルトの名無しさん (ワッチョイ 4243-gDrC) [sage] 2024/11/20(水) 22:54:39.86 ID:g9sD9hG/0(1) AAS
アホみたいなカスの嘘です
776(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/22(土) 23:40:24.86 ID:nNEN9uWE0(3/3) AAS
>>775775(1): デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/22(土) 22:39:33.53 ID:kbZO019Z0(3/4) AAS
>ところでテンプレートクラスじゃなくてクラステンプレートな!
なるほど……orz
コード例:
class Foo {
friend std::unique_ptr<Foo>;
static std::unique_ptr<Foo> m_pObj;
private:
static Foo* createInstance() {
if (m_pObj == NULL) { m_pObj = std::unique_ptr<Foo>(new Foo()); } return m_pObj.get()j;
// ↑ std::make_unique<Foo>()したらビルドエラー(使うには多分std::make_unique<Foo>()もfriendが要る
// スレッドセーフ化は省略
}
// ...
};
new Foo() を Foo のメンバ関数の中でやる分には自分自身の中でやることなので friend 宣言は不要。
std::make_unique<Foo>() をすると std::make_unique の中で Foo のコンストラクタを呼ぼうとするから std::make_unique<Foo> をフレンド宣言する必要がある。
824: デフォルトの名無しさん (ワッチョイ cd7c-a/1F) [sage] 2025/04/06(日) 10:21:41.86 ID:gleSakN+0(1) AAS
リスコフの置換原則を破るからあんまり良くはないと思うけどな
基底クラスとして振る舞わせる気がないならprivate継承すべきだ
854: デフォルトの名無しさん (ササクッテロロ Spd1-gX4K) [sage] 2025/04/11(金) 14:31:46.86 ID:2mKx2F8Up(1) AAS
それってOS付属のランタイムをrustで書いたらって事?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.034s