スレを勃てるまでもないC/C++の質問はここで 18
>>951 そうなんですけど生ポインタのほうがシンプルですので、、、
プログラムの最後でいいならハンドル形式にしてしまうとか。
スマートポインタだってシンプルじゃねぇか
まあ慣れもあるのかもしれないけど
GCでいいじゃん
他の言語でいいじゃん
すみません、ちょと気になったんですが
C++で構造体やクラスの同名変数のみを自動でコピーするような処理は可能でしょうか?
若干条件付きでも構いませんが、順序はバラバラ(memcpyナシ)でお願いします。
struct A {
int x, y, z;
}
struct B {
int a, x, y;
}
A a;
B b;
autoCopy(a, b); // ← x, yのみコピーされる感じ
出来ない。
>>957 template<class A, class B>void autoCopy(A & a, const B & b) {a.x = b.x; a.y = b.y;}
>>959 同名のメンバー名のリストは与えられないという条件に決まってんだろ。ちっとは頭使え。
Aを全クラスに継承させれば実質できるんじゃね?w
>>960 それだったら既に>958で答が出ている。
敢えて次善策を提示しているに決まっているだろう。
ちっとはその身体の上に乗っかってる代物を有効活用したらどうだ?
>>957 設計が間違ってるからそんな欲求が生まれる
同名の変数部分をまとめて構造体にすればいい
まとめて一回でコピーできる
965 :
944:2011/06/07(火) 13:19:12.71
>>947 遅れましたが、これを使っていきます。ありがとうございます!
bccで.tdsや.objを生成しない方法はありますか?
DBや通信が絡んだりすると、
どうしても一部のメンバ変数のみを送受信したくなると思うのですが、
設計ミスですかそうしたか。
boost::serialization
すみません。キー入力の常態を知りたくて
www-higashi.ist.osaka-u.ac.jp/~k-maeda/vcpp/com3-2keycodes.html
ここの一覧全ての定数とWPARAMを、if文で==で比較しているのですが
なぜか定義していないA〜Zのアルファベットキーに反応して
Aだと97の値が来て、VK_NUMPAD1(テンキー1)に一致し、
Sだと115の値が来て、VK_F4(F4キー)に一致し、
Dだと100の値が来て、VK_NUMPAD4(テンキー4)に一致してしまいます。
なぜこんな事になるのでしょうか?
WM_CHARはキャラクタ−コード。
WM_KEYDOWN等は仮想キーコード。
VK_???は仮想キーコード。
なので、
case WM_CHAR:
if(wParam == 'A') {
...
とすれば拾えるハズ
972 :
970:2011/06/08(水) 02:01:02.82
>>971 ご助言を元にいじって、仮想キーを != WM_CHAR で取得する事で解決できました。
勉強になりました。ありがとうございます。
void func(int n)
{
assert(n>0);
if(!(n>0)) throw func_error(n) ;
//・・・
};
アサーションって運が悪いとデバッグ時に気がつかないかもしれないから(例えばfunc(rand())みたいな場合)
上のようにリリース時のチェックも追加したほうがいいと思うんだが、なぜみんな書かないの?
リリース時もチェックするならなんでassertするの?
つまりassert不要論
表示処理なんかでエラーが雪崩れないところ用にlogging_assertみたいなc/c++標準機能が欲しいね
stderrを表示処理に使うのはいかがなものか
978 :
デフォルトの名無しさん:2011/06/08(水) 13:30:00.24
ZZ型の変数を10進数から16進数にするにはどうすればいいですか??
>>978 変数自体は進法は関係がない。
表示などの目的で16進数に変換したいなら、printf()系で変換するのが手っ取り早い。
980 :
デフォルトの名無しさん:2011/06/08(水) 14:14:44.98
>>979 解答ありがとうございます。
表示目的ではないのですが、sprintfやstringstreamなどで試してみてもZZ型が
16進文字列になりませんでした。
ZZ型ってNTLとやらの多倍長整数でいいのかな?
NTLにZZ型を扱う文字列関数(printfやitoa相当のもの)がないなら自分で書くしかない
982 :
デフォルトの名無しさん:2011/06/08(水) 14:21:50.77
はい。
やっぱり自分で書くのが一番なんですかね。ありがとうございました。
参考になりました。
983 :
デフォルトの名無しさん:2011/06/08(水) 14:24:18.69
static char a[] = "0123456789ABCDEF";
long n = (long)(zz % 16);
s = a[n] + s;
今開いてるディスクリプタの一覧を取得する方法
ってありますか?
985 :
デフォルトの名無しさん:2011/06/08(水) 14:40:42.61
>>985 マジすか。 標準Cライブラリも案外だらしないな・・・
しかたない。 /procの下でも読みます。
>>986 そもそも標準ライブラリはディスクリプタを扱わない。
∵そう言う方法で管理しないシステムで使うことも考慮されているから。
>>987 あーそういえばそうだったね
低レベルばっかり触ってるからうっかりしてた
ファイルのアドレスとデータを指定して書き換えたい
ただしかなりファイルが大きいので一部のために全部書き換えることはしたくない
固定長のデータ等扱うのに需要はあると思うけど
どれ使っていいかわからない
日本語でOK。
つ[fopen(), fclose(), fseek(), fread(), fwrite()]
>>989 "r+"でfopen 〜 fseek 〜 fwriteやfprintfで書き込み
fstream 〜 seekp 〜 write や << で書き込み
994 :
デフォルトの名無しさん:2011/06/08(水) 22:03:41.24
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
995 :
デフォルトの名無しさん:2011/06/09(木) 00:20:38.27
(´・ω・`)
♪ ♪ ρ ♪
♪ ∧__∧. 。∧__∧ .Π∧__∧♪ ο∧__∧ ∧__∧∩))
Ο´・ω・`) .│´・ω・`) ┃´・ω・`) │´・ω・`) ρ・ω・`)|
(つ .│ (つ │ ((つ > (つ │ (つ ./
♪ │ U (_))) .U (_))) .│♪(_))) U (_))..〈
((__ノ^(___)) (((_)♪ (((_) (((_) ((_)♪
おいしい ハオチー ボーノ アロイ デリシャス デリシュ〜
>>997 std名前空間に入れていい物って限られてなかったか?
999 :
デフォルトの名無しさん:2011/06/09(木) 17:25:30.37
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリッ
>>997 sortがswap利用してないからじゃね?
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。