【初心者歓迎】C/C++室 Ver.82【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/02/04(月) 05:42:06.64ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.81【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1354116880/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
NG推奨:半角にして登録してくだい
◆QZaw55cn4c
/tech/1313183984/
0002デフォルトの名無しさん
2013/02/04(月) 08:07:50.7580代からテンプレートが変、次代にはちゃんともとどおりにしておくように。
0003デフォルトの名無しさん
2013/02/04(月) 15:32:11.13どうおかしいのか書けよ臆病者
0004デフォルトの名無しさん
2013/02/04(月) 17:51:35.520005デフォルトの名無しさん
2013/02/04(月) 18:04:06.040006デフォルトの名無しさん
2013/02/04(月) 18:12:29.10仕様が分からんから何とも言えんが、蔵ならまだしも鯖側の処理は莫大になる可能性があるからCで作ったほうがいいだろうね
全プレイヤーの処理が集中するわけだからね
まずは作ろうと思ってるモルピグの設計からやれ
0007デフォルトの名無しさん
2013/02/04(月) 18:20:31.63サーバ処理をPerlとかRubyでやってたら遅すぎて話にならない。
CGIと違って常時接続なうえに、恐らくマルチスレッドも必須。
0008デフォルトの名無しさん
2013/02/04(月) 20:00:46.39なんかwinでC/C++を使うとキチになるじゃと心配です
あとC/C++使っている人にはキチが多いんですか?
0009デフォルトの名無しさん
2013/02/04(月) 20:09:31.19こんな風に反応してる俺もキチ
0010デフォルトの名無しさん
2013/02/04(月) 20:27:11.01今動いてるモルピグ鯖はCで書いたんだけど、これC++にしたら遅くなる?
クラス使いたいからC++に少しずつ書き換えていきたいんだけども、C++にすると遅くなるともかいた
モルピグ鯖として致命的なほど遅くならないならC++にしたい
0011デフォルトの名無しさん
2013/02/04(月) 21:16:28.920012デフォルトの名無しさん
2013/02/04(月) 21:17:50.34殆どの場合お前みたいな伝聞での思い込みか設計が糞
まともなコード書ける自信があるならC++でいい
0013デフォルトの名無しさん
2013/02/04(月) 21:26:19.93あのスレに対して強烈な悪意を持って執着している変質者が
継続的に荒らしているからスレが機能していない。
0014デフォルトの名無しさん
2013/02/04(月) 21:31:45.43あれはどうやってるんですか?
0015デフォルトの名無しさん
2013/02/04(月) 21:41:56.35アホみたいな質問だなおい
C++にしたら遅くなる?とか、例えばCのソースをまんまC++のコンパイラでコンパイルしただけじゃ何も変わらないし
少しずつ書き換えていきたいって思ってるのなら、書き換えないと実際に速度は変わらないからそれで実践しろよ
ま、俺の勘と経験と、あとどこかの記事の情報によると、継承を用いた多態をほぼすべての個所でガンガンに使ったり
した上で、遅くなるとして(Cが100%として)96%くらいだがな
この言葉を信じるも信じないも自由だが、たった4%の為にびくびくするくらいなら、自分で実際に元のコードを残しつつ試してみたらいいと思うよ
ちなみに一番重要なのは「CのコードをC++のコンパイラでコンパイルしたところで速度は変わらない」ってとこな。ベンダによっては違うかもしれないがw
001610
2013/02/04(月) 22:50:05.80ちょっと書き換える方向でチャレンジしてみるわ
0017デフォルトの名無しさん
2013/02/04(月) 22:55:17.51ウィンドウズは確か同時接続数に限界があったはず。
0018デフォルトの名無しさん
2013/02/04(月) 23:15:29.66int main(){
int a;
a = 3 + 5;
printf( "3+5は%dです" , a );
return 0;
}
>bcc test.c
>test.exe
>3+5は8です
なにこれ、8って表示したいだけなのに随分面倒だな。
真っ暗な画面に8ですとか出ても退屈で面白くないし。
つーかこんなことやっててゲームなんか作れるの?
数当てゲームとかじゃなくてファイナルファンタジーみたいなやつ作りたいんだよ。
こんなことやってて作れるようになるの?
って最初思ってたけど作れるようになったわw
基礎は重要。
ゲーム作ろうと思い立ってまず書店にC言語の入門書を買いに行ったのは正解だった。
0019デフォルトの名無しさん
2013/02/04(月) 23:50:47.27俺は鯖はLinuxだよ
Linuxはなぜかwinsock使えないし
Segmentation Faultとか出て落ちまくるから
かなりきつい
0020デフォルトの名無しさん
2013/02/05(火) 00:40:18.20片山とかいうゴミコテだろ?
あいつ荒らししかしてないだろw
0021デフォルトの名無しさん
2013/02/05(火) 00:42:12.11>Linuxはなぜかwinsock使えないし
普通にBerkeley/POSIX socketが使えるでしょう、というか、winsock は erkeley/POSIX socket を windows に移植したもの
>Segmentation Faultとか出て落ちまくるから
そりゃプログラムのバグでしょう
0022デフォルトの名無しさん
2013/02/05(火) 00:48:47.150023デフォルトの名無しさん
2013/02/05(火) 01:14:21.260024デフォルトの名無しさん
2013/02/05(火) 01:19:21.060025デフォルトの名無しさん
2013/02/05(火) 01:36:33.150026デフォルトの名無しさん
2013/02/05(火) 01:50:13.120027デフォルトの名無しさん
2013/02/05(火) 01:52:40.36longって何バイトだっけ?8バイト?
shortが2バイトだから4バイトくらいか?
いや、そもそもshortって2バイトだっけ?4バイト?
booleanは1バイトだよな?1バイトか?1ビットあれば十分なのに1バイトか?
intって環境によって変わるんだっけ?
という状況に頻繁に陥ります
以前はポストイットに書いてディスプレイの端に貼っていたのですが
ヲタっぽさに耐えきれず剥がしました
そんな今では分からなくなるたびに検索している始末です
覚えるコツがあればお願いします
化学の元素記号を覚えるために「すいへーりーべ・・・」というのがありますが
ああいう語呂合わせみたいなのがあると最高です
0028デフォルトの名無しさん
2013/02/05(火) 01:55:17.90覚えるにしてもこれくらいだろ
short≦int≦long
0029デフォルトの名無しさん
2013/02/05(火) 01:58:30.050030デフォルトの名無しさん
2013/02/05(火) 02:06:28.90003127
2013/02/05(火) 02:12:09.86コーディングしながらざっくり計算したいときとか困らないですか?
malloc( sizeof( long ) * 100 * 100 )
だと、
ああ、だいたい40キロバイトか・・・
ちょっと多いような気がするな、
半分くらいにしとくか
ってな具合にコーディングしながらだいたい見当をつけられるじゃないですか
0032デフォルトの名無しさん
2013/02/05(火) 02:28:22.88そんなメモリの確保の仕方はしない
0033デフォルトの名無しさん
2013/02/05(火) 02:29:59.85いっそのこと毎回毎回 sizeof 表示するプログラムでも書きゃ覚えるんじゃね?
0034デフォルトの名無しさん
2013/02/05(火) 02:41:12.70ショーツ (short 2) は
長いよん (long 4) 、
不老死 (float 4)
ダブルへ伊藤 (double 8)。
0035デフォルトの名無しさん
2013/02/05(火) 02:45:41.37不老死のダブルへ伊藤〜♪
0036デフォルトの名無しさん
2013/02/05(火) 04:07:52.98アプリケーションによっては新規作成するとき等にとりあえず適当な量を確保するだろ
他にはストリーミングのときのバッファサイズとか
0037デフォルトの名無しさん
2013/02/05(火) 04:26:40.33値を決めるんなら根拠を持て
0038デフォルトの名無しさん
2013/02/05(火) 04:57:27.560039デフォルトの名無しさん
2013/02/05(火) 07:09:51.35要素数を決めて確保するならバイト数は不定
0040デフォルトの名無しさん
2013/02/05(火) 08:30:15.26依存するのなら面倒がらずに sizeof で記述する、でも
書き捨てならとりあえずほとんどの環境で
32bit: sizeof(int)=sizeof(long)=32 と覚えておくとよい
ほとんどの環境で 64bit: sizeof(int)=32, sizeof(long)=64 なのには違和観を覚えてしまうが、なぜこうなってしまったのだろう?
boolean が 1bit なのは自明、short はそのつど sizeof している
0041デフォルトの名無しさん
2013/02/05(火) 08:51:24.040042デフォルトの名無しさん
2013/02/05(火) 09:48:41.91いかんことを決められないって話。
0043デフォルトの名無しさん
2013/02/05(火) 11:15:49.38VC++でもバージョンによって4Byteだったり1Byteだったりするし、そんな○型だから○Byteとか覚えるものではない
どうしてもサイズを完全に指定したいなら、処理系に依存したビットサイズ指定の型でも使えば楽なんじゃないか?
0044デフォルトの名無しさん
2013/02/05(火) 12:28:33.220045デフォルトの名無しさん
2013/02/05(火) 13:17:44.22このコードって何をやっているのでしょうか?
頭が悪すぎて、この関数がどういう処理をしているのか理解できません。
どなたか、コメントつけて解説してくれませんか?
0046デフォルトの名無しさん
2013/02/05(火) 13:18:37.170047デフォルトの名無しさん
2013/02/05(火) 13:51:38.71機械語なら俺に質問しろ!その2
http://toro.2ch.net/test/read.cgi/tech/1356735624/
アセンブラ 13
http://toro.2ch.net/test/read.cgi/tech/1314512680/
辺りで聞いたほうがいいと思う
0048デフォルトの名無しさん
2013/02/05(火) 14:03:11.38機種関係なく、コードの流れとして結果何をやっているかだったら応えられるが
0049デフォルトの名無しさん
2013/02/05(火) 15:11:17.65ありがとうございます。
ひょっとして、スレチでしょうか?
ソースコードがないので逆アセンブルした物を元にCで書き直しました。
http://codepad.org/Mwek5qUR
出力が110C8531C00・・・となっています。
110C8531D00 = 123456780 (32進数)に近いので、32進数的な何かだと思うのですが。
0050デフォルトの名無しさん
2013/02/05(火) 16:36:42.48それが、何するものなのか、わからないと...
0051デフォルトの名無しさん
2013/02/05(火) 18:35:41.82いや、その short とか long が環境によって違うので、ラップして好きにかえられるように、と。
0052デフォルトの名無しさん
2013/02/05(火) 18:59:47.49手抜きのつもりが#ifのネストですごいことになるんだよな
0053デフォルトの名無しさん
2013/02/05(火) 20:02:45.52釣りすぎる
0054デフォルトの名無しさん
2013/02/05(火) 20:34:44.48し、しまった、8で割るのをわすれてしまった‥‥
0055デフォルトの名無しさん
2013/02/05(火) 21:17:08.51そういうレベルの問題ではないんだが・・・
0056デフォルトの名無しさん
2013/02/05(火) 21:25:52.25>違和観
なんだこれ
0057デフォルトの名無しさん
2013/02/05(火) 21:40:27.320058デフォルトの名無しさん
2013/02/05(火) 21:43:17.67http://ideone.com/UlZ9uF
sizeof(bool) は 1 でしたね。
あとなにを間違えているのでしょうか?
0059デフォルトの名無しさん
2013/02/05(火) 21:51:43.84VCは sizeof(long) == 4 で
gccは sizeof(long) == 8
ほとんどの環境でlongが64-bitとか噴飯もの
0060デフォルトの名無しさん
2013/02/05(火) 23:13:46.65俺のソフトがやばい
あ、それってコンパイル環境のこと?実行環境のこと?
0061デフォルトの名無しさん
2013/02/05(火) 23:20:38.870062デフォルトの名無しさん
2013/02/05(火) 23:24:39.91stdint.h があるならそれ使うといいが
ない環境を考えるなら自前で定義だな
0063デフォルトの名無しさん
2013/02/05(火) 23:41:33.210064デフォルトの名無しさん
2013/02/05(火) 23:48:59.400065デフォルトの名無しさん
2013/02/06(水) 02:50:48.250066デフォルトの名無しさん
2013/02/06(水) 07:54:49.940067デフォルトの名無しさん
2013/02/06(水) 13:11:05.92キャストなしで先に検知する方法あるかな
0068デフォルトの名無しさん
2013/02/06(水) 13:13:03.690069デフォルトの名無しさん
2013/02/06(水) 13:29:17.54unsigned msk=0xffff; // 32bit
unsigned w=(x&msk)+(y&msk);
unsigned u=(x>> 16)+(y>> 16)+(w>> 16);
if (u>> 16){ ・・・// OF
やっぱフラグレジスタ見れ
0070デフォルトの名無しさん
2013/02/06(水) 13:30:18.96サンクス
じゃあ安心だ
0071デフォルトの名無しさん
2013/02/06(水) 13:34:46.370072デフォルトの名無しさん
2013/02/06(水) 14:22:03.12x86でVC++ならこんな風にできるけど、ちょっとなあ・・・
unsigned int a = 0x80000001;
unsigned int b = 0x80000002;
unsigned int sum;
bool overflow;
sum = a + b;
__asm
{
jc OF
mov [overflow], 0
jmp END_OF
OF:
mov [overflow], 1
END_OF:
}
// sum == 3, overflow = true
0073デフォルトの名無しさん
2013/02/06(水) 14:25:16.18ttp://ideone.com/UypVGL
あまり美しくないけど
0074デフォルトの名無しさん
2013/02/06(水) 15:04:10.77余った分を足すのを忘れないように
0075デフォルトの名無しさん
2013/02/06(水) 15:06:27.480076デフォルトの名無しさん
2013/02/06(水) 15:07:51.80間違った
×> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (x))
○> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (y))
0077デフォルトの名無しさん
2013/02/06(水) 15:20:07.55片方だけでいいんちゃう?
0078デフォルトの名無しさん
2013/02/06(水) 15:27:34.92これでいいか
0079デフォルトの名無しさん
2013/02/06(水) 15:29:41.18#define isOverflow(x, y) (((x) + (y)) < (x))
だけでいいね
>>74は
#define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1) >= (1 << (sizeof(unsigned int) * 8 - 1)))
かな
0080デフォルトの名無しさん
2013/02/06(水) 15:37:39.60isOverfloow(uint32_t x,uint32_t y)
{
uint32_t z;
uint32_t a;
a=x%2+y%2;
a/=2;
z=x/2+y/2;
z+=a;
return z&0x80000000;
}
008179
2013/02/06(水) 15:52:30.85ああ、そうだった。
ということで>>79は
×> #define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1) >= (1 << (sizeof(unsigned int) * 8 - 1)))
○> #define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1)) & (1 << (sizeof(unsigned int) * 8 - 1))
0082デフォルトの名無しさん
2013/02/06(水) 20:13:44.650083デフォルトの名無しさん
2013/02/07(木) 19:01:14.510084デフォルトの名無しさん
2013/02/07(木) 19:03:17.880085デフォルトの名無しさん
2013/02/07(木) 23:38:59.53今のWin32APIスレと同じで一回糞スレ化してしまったら元に戻すのは容易ではない
0086デフォルトの名無しさん
2013/02/07(木) 23:39:42.780087デフォルトの名無しさん
2013/02/07(木) 23:44:08.17素晴らしいご両親だ。
あなたのご両親はまさに社会の財産。
0088デフォルトの名無しさん
2013/02/07(木) 23:51:41.39素晴らしいご両親だ。
あなたのご両親はまさに社会の財産。
0089デフォルトの名無しさん
2013/02/08(金) 00:33:57.47素晴らしいご両親だ。
あなたのご両親はまさに社会の財産。
0090デフォルトの名無しさん
2013/02/08(金) 02:33:31.510091デフォルトの名無しさん
2013/02/08(金) 05:05:20.120092デフォルトの名無しさん
2013/02/08(金) 06:43:02.32しょうがない
0093デフォルトの名無しさん
2013/02/08(金) 13:37:22.080094デフォルトの名無しさん
2013/02/08(金) 18:09:49.11もうこれJavaに移行したほうがいいのかな
0095デフォルトの名無しさん
2013/02/08(金) 18:14:56.510096デフォルトの名無しさん
2013/02/08(金) 20:18:55.67>>94
生ポ使わなくなったらもうC/C++は止めれ。Javaに移行せよ
C/C++はhogeと生ポが命
0097デフォルトの名無しさん
2013/02/08(金) 21:16:46.51C/C++ を使うべき所と
そうでもない所は見極めるべきではある
0098デフォルトの名無しさん
2013/02/08(金) 21:22:27.30.NETフレームワークはパフォーマンスの点でどうしても
ネイティブバイナリに劣る。そこがわかってれば、何を
使うべきかはおのずと判断がつくはず。
.NETが悪いわけでもネイティブがいいわけでもなく、
適材適所。
0099デフォルトの名無しさん
2013/02/08(金) 21:26:18.82C++版だとサポートの弱いライブラリだと良いこともある。
スレッド周りの便利さは.NETならではだよな。
0100デフォルトの名無しさん
2013/02/08(金) 21:27:52.84C/C++ でスレッド強制終了したら
リソースリークが怖いし
0101デフォルトの名無しさん
2013/02/08(金) 21:37:00.31ポインタのtypedef時の命名規則と、扱い(*を付けるか付けないか)が面倒臭くなってきたんだ
テンプレートクラスでラップしてポインタとして扱わなくても機能するように
工夫し始めてたら、もうJavaもしくはC#で良いかなと・・・
0102デフォルトの名無しさん
2013/02/08(金) 21:39:53.590103デフォルトの名無しさん
2013/02/08(金) 21:40:18.55引数をナマポ+サイズにしておくと
配列でも配列クラスでも受け取れるので
0104デフォルトの名無しさん
2013/02/08(金) 23:39:37.53特に省メモリ環境だとアセンブラがメインに…
0105デフォルトの名無しさん
2013/02/09(土) 18:36:03.93いやC++でいいだろ。
・・・あ、コンパイラが無いとかか。
0106デフォルトの名無しさん
2013/02/09(土) 18:40:19.17ただ開発をCにするかC++にするかはプロジェクトの
方針による。ヒューマンな理由から物理的な理由まで
その理由は様々。
0107デフォルトの名無しさん
2013/02/09(土) 20:15:08.87それ以外の分野でCが1番使われているってあるのか
0108デフォルトの名無しさん
2013/02/09(土) 20:33:57.64OSの開発
0109デフォルトの名無しさん
2013/02/09(土) 21:29:15.570110デフォルトの名無しさん
2013/02/09(土) 21:32:21.060111デフォルトの名無しさん
2013/02/09(土) 21:41:15.370112デフォルトの名無しさん
2013/02/09(土) 21:51:28.220113デフォルトの名無しさん
2013/02/09(土) 22:50:12.70ここスレ住人は実際にCでどんなコンパイラやOS開発しているの?
って聞きたかった
0114デフォルトの名無しさん
2013/02/09(土) 23:58:42.65PICってマイコンだとマジでないね。
古い16F系統はともかく最近のアーキテクチャを高級言語に合わせたりMIPSのIPを使った製品でも
コンパイラがgccベースだってのに無い。
0115デフォルトの名無しさん
2013/02/10(日) 00:09:58.25ハード的な利点も多いんだけど。
0116デフォルトの名無しさん
2013/02/10(日) 01:08:23.28えっと…言いにくいんだけどwinAVRもgccベースだよ?
0117デフォルトの名無しさん
2013/02/10(日) 01:08:53.75gccだからavrに乗り換えたって意味か。
0118デフォルトの名無しさん
2013/02/10(日) 12:49:09.88shared_ptr<Type const> の時も相まってすごく悩むんだけど
0119デフォルトの名無しさん
2013/02/10(日) 15:15:38.54typedef std::shared_ptr<Type const> Type_const_p;
0120デフォルトの名無しさん
2013/02/10(日) 15:31:30.48typedef の用途による。中身に応じた名前付けするぐらいならそんな typedef 要らないんじゃないの?
0121デフォルトの名無しさん
2013/02/10(日) 16:08:33.440122デフォルトの名無しさん
2013/02/10(日) 16:16:24.690123デフォルトの名無しさん
2013/02/10(日) 16:57:17.460124デフォルトの名無しさん
2013/02/10(日) 17:24:27.670125デフォルトの名無しさん
2013/02/10(日) 19:37:31.41ファンクタを定義せずにカスタムデリータを使えれば、ぐっと用途が広がるんだけどな。
0126デフォルトの名無しさん
2013/02/10(日) 21:01:14.540127デフォルトの名無しさん
2013/02/10(日) 21:03:19.950128デフォルトの名無しさん
2013/02/10(日) 22:14:58.510129デフォルトの名無しさん
2013/02/10(日) 22:42:05.710130デフォルトの名無しさん
2013/02/10(日) 22:53:36.630131デフォルトの名無しさん
2013/02/10(日) 23:28:10.59これを聞く限りアクセントはintelligenceと同じだな。
0132デフォルトの名無しさん
2013/02/11(月) 21:49:10.66インタフェースクラスはポリモルフィズムが行われる上で重要で
主に、概念(会社には社員がいるが部署ごとに仕事が違う)や
可能な操作(飛べる・描画できる)などをクラスに付加するために継承を行うようですが、
単純な差分プログラミングを行いたい場合に、
インタフェースクラスを継承してあらたなインタフェースクラスを作るというのは
オブジェクト指向の考えとして間違っているのでしょうか?
例を挙げます。
ゲームを作る場合、プレイヤーの入力操作を扱えるクラスが欲しいとします。
操作にはキーボード操作、マウス操作、ゲームパッド操作などがあると思いますが、
環境に依存したくないので、それぞれのインタフェースクラスを作成しようと思います。
そこでまず、キーボード用に「あるキーが押されているかどうかを判定するメソッド」を考えました。
しかしこのメソッドは、キーボード用に作ったつもりでも見方によっては、
マウスは「左右クリック」が、ゲームパッドは「ボタン」が、それぞれキーに相当できると考えると
上記の用意したい3つのインタフェース全てに共通する操作なのでは?と思い至りました。
しかしながらマウスにはマウスホイールやマウスポインタが、
ゲームパッドには左右スティックが存在します。
つまりマウスとゲームパッドは、キーボードと同様に「キー入力を判定できる」クラスとして扱うことはできるが、
加えて、それぞれに必要なメソッドを追加しなければなりません。
このとき、「インタフェースを継承してあらたなインタフェースを作っても良いのでしょうか?」という疑問なのです。
長文失礼しました。
0133132
2013/02/11(月) 21:53:30.33質問用の長文を推敲する上でなんとなく答えのようなものが見えてきたかもしれません。
>>132の例の場合だと
「ある識別子に対応したON/OFF的な情報を扱えるクラス」
「ある識別子に対応した1次元(正方向と負方向)の尺度を扱えるクラス」
「ある識別子に対応した2次元(x軸とy軸)の尺度を扱えるクラス」
でインターフェースを分ければ良さそうですね
0134デフォルトの名無しさん
2013/02/11(月) 22:04:54.12キーとパッドくらいなら割と共通の感覚で操作すると思うけど
マウスは完全に別判定なのだから共通化する必要性は無いと思うぞ
0135デフォルトの名無しさん
2013/02/11(月) 22:12:48.93私の説明が下手ですみません。>>132の例は
もともと3つは同じインタフェースにするつもりはなく、別々のインタフェースを作るつもりだったが、
それぞれのインターフェースを作る過程で共通の操作が浮かび上がってきました。
インターフェースなのに共通する操作を抽出して差分プログラミングをしちゃってもいいのでしょうか?
ということ言いたかったのです。
実際は私の中でインタフェースと、差分プログラミング用の基底クラスが
ごちゃ混ぜになってるのが原因のようですね
0136デフォルトの名無しさん
2013/02/11(月) 22:15:20.270137デフォルトの名無しさん
2013/02/11(月) 22:19:33.79これは実装を隠蔽するためのインターフェイスだが
>>133では機能を持たせるためのインターフェイスに摩り替わってるのが混乱の元じゃね
0138デフォルトの名無しさん
2013/02/11(月) 22:29:11.11キーやパッドのボタンをダイレクトには扱わない方がいい
ゲーム内で使用する仮想キーコードを用意して
それに対してマウスのボタンやキーやパッドのボタンを割り当てる
そして、入力に対する処理はこの仮想キーコードを使って行う
マウスとかキーボードとかパッドとか
そういうのは設定画面以外では隠蔽してしまうべきだな
0139デフォルトの名無しさん
2013/02/11(月) 22:39:30.63確かに、理論よりもメリットを優先すべきですね
>>138
参考になります。
特に多数のボタンを1つに割り当てたりする場合も考慮して
アプリ側の仮想コードと対応テーブルは重要そうですね
0140デフォルトの名無しさん
2013/02/11(月) 22:51:59.08キー・ボタン系は仮想キーコードを使用した入力で統一
十字キーとアナログスティックも共通化できると思う
マウス移動は移動量でなく絶対位置で扱う事が多いので
十字キー/スティック操作は別個に扱った方がいいと思う
0141デフォルトの名無しさん
2013/02/12(火) 01:13:54.820142デフォルトの名無しさん
2013/02/12(火) 13:45:35.860143デフォルトの名無しさん
2013/02/12(火) 18:14:16.34ありがとう
もらった回答をもとに試行錯誤してみる
0144デフォルトの名無しさん
2013/02/13(水) 10:52:06.22std::shared_ptrを使ってインスタンス変数を宣言していたのですが、
その変数に代入して{}を抜けると、代入したものがdelateされてしまいました。
Objective-Cのretain/releaseのように参照カウントの上げ下げ?を自分でしたいのですが、どうすればいいですか?
0145デフォルトの名無しさん
2013/02/13(水) 11:01:09.67外のスコープにある shared_ptr 変数にコピーすればいい。
0146デフォルトの名無しさん
2013/02/14(木) 00:19:19.42Base* base_p = new Sub;
base_p->DoVirtualMethod();
DoVirtualMethodがオーバーライドされていればSub側の処理が行われますが、
void Test(Base* pt)
{
pt->DoVirtualMethod();
}
このような関数に上記のbase_ptを渡した場合でも
Sub側の処理が行われることが保証されるのでしょうか?
また、std::iostream郡で試したところ
void Test(const Base &ref)
{
ref.DoVirtualMethod();
}
このような関数にSubの変数を渡しても正常に動作することがわかったのですが
これは上記でいう*base_ptを渡した場合でも同じことになるのでしょうか?
0147デフォルトの名無しさん
2013/02/14(木) 00:46:00.340148デフォルトの名無しさん
2013/02/14(木) 01:50:43.130149デフォルトの名無しさん
2013/02/14(木) 10:19:30.470150デフォルトの名無しさん
2013/02/14(木) 10:20:48.17いいえ。
http://en.wikipedia.org/wiki/Child_class
0151デフォルトの名無しさん
2013/02/14(木) 21:20:07.88みたいな感じで整数のベクタを配列みたいに初期化したいのですが、できますか?
push_back()とか使って1個ずつやらないとダメですか?
0152デフォルトの名無しさん
2013/02/14(木) 21:37:13.310153デフォルトの名無しさん
2013/02/14(木) 21:53:29.750154デフォルトの名無しさん
2013/02/14(木) 22:26:10.130155デフォルトの名無しさん
2013/02/14(木) 22:55:35.06一旦配列を用意してからそれで初期化だな
const int a_init[] = {1,2,3,5,9,1000};
vector<int> a(a_init, a_init + _countof(a_init));
0156デフォルトの名無しさん
2013/02/14(木) 23:20:01.690157デフォルトの名無しさん
2013/02/14(木) 23:24:07.67Vector(コンテナではない)を複数渡したい時にいちいちVector(a,b,c)ってするのめんどくさすぎだった
0158デフォルトの名無しさん
2013/02/15(金) 23:29:07.93それは何でか知らんが駄目なんだよ
普通はvector<int> a({1,2,3,5,9,1000});
0159デフォルトの名無しさん
2013/02/16(土) 00:25:56.880160デフォルトの名無しさん
2013/02/16(土) 00:50:07.37例えば scanf("%[^abc]", str); は、std::cin で書くとどうなりますか?
0161デフォルトの名無しさん
2013/02/16(土) 02:00:40.24peekで読んでチェックしてマッチしてたらignoreで進めるとかする
0162デフォルトの名無しさん
2013/02/16(土) 13:40:43.040163デフォルトの名無しさん
2013/02/16(土) 13:48:02.390164デフォルトの名無しさん
2013/02/16(土) 15:13:37.58jni/Hoge.h:3:30: error: 'void Hoge::test(Func) [with Func = main()::<lambda()>]', declared using local type 'main()::<lambda()>', is used but never defined [-fpermissive]
というエラーでコンパイルが通りません。
どのように書けばよいのでしょうか?
//Hoge.h
class Hoge {
public:
template<typename Func> void test(Func func);
};
//Hoge.cpp
#include "Hoge.h"
template<typename Func> void Hoge::test(Func func) {
func();
}
//main.cpp
#include <stdio.h>
#include "Hoge.h"
int main(void) {
Hoge *hoge = new Hoge();
const char* str = "hogegohe";
hoge->test([&]{
printf(str);
});
return 0;
}
0165デフォルトの名無しさん
2013/02/16(土) 15:27:48.35○hoge->test([&](){
0166デフォルトの名無しさん
2013/02/16(土) 16:33:05.52hoge厨はプログラムやる資格なし
0167デフォルトの名無しさん
2013/02/16(土) 16:34:09.41制作したいと思って、プログラムの勉強でもしようかと思っているものです。
この場合、CかC++のどちらを勉強するのが良いですかね?
普段は仕事で科学計算とかしたりするんでFortran使いですが、
その点Cも勉強すれば一石二鳥な感じはするのだけど、ググってみると
C++を使ってる人が多いみたいで。CでできなくないならCがいいのだけど、
何分初心者なもんで、さっぱりわかりません
0168デフォルトの名無しさん
2013/02/16(土) 16:38:07.63荒らすためにネタ質問を投下するのはやめてもらえませんか?
結構本気で迷惑です。
0169デフォルトの名無しさん
2013/02/16(土) 17:15:55.05ウザい
0170デフォルトの名無しさん
2013/02/16(土) 17:55:48.35C++はCを内包しているし、取り敢えずCからはじめればいいんでない?
つーか、最終的には使いたいライブラリ次第だと思う。
Cしか勉強しないと決めてしまうと、C++で使うライブラリを使えないことになってしまう。
0171デフォルトの名無しさん
2013/02/16(土) 18:37:23.86結局ライブラリ使うならC#とかJavaとかの方が、全然楽な気が。
以外とHTML5 + JavaScriptってのもありかも。
0172デフォルトの名無しさん
2013/02/16(土) 18:47:12.84ヘッダとソースに別けずにHoge::testの定義もヘッダ(Hoge.h)に書く
0173デフォルトの名無しさん
2013/02/16(土) 18:47:42.92Hoge.cpp の内容を Hoge.h に持っていけば?
0174デフォルトの名無しさん
2013/02/16(土) 19:21:46.21人生諦めればいいのにw
0175デフォルトの名無しさん
2013/02/16(土) 19:27:27.79>164は歩く恥さらしとして我々を楽しませてくれている。
楽しませるといっても嘲笑の対象になってるだけだがwww
0176デフォルトの名無しさん
2013/02/16(土) 19:43:54.080177デフォルトの名無しさん
2013/02/16(土) 19:45:25.000178デフォルトの名無しさん
2013/02/16(土) 19:48:07.673D関連ならC/C++が一番情報が多いから、結局C/C++でやった方が楽だと思うよ
unityみたいなゲームエンジンを利用するのもアリかもしれないけど
0179デフォルトの名無しさん
2013/02/16(土) 19:50:37.71JavaではパラレルGCで止まらなくなったけど
0180デフォルトの名無しさん
2013/02/16(土) 19:51:17.48マジで迷惑だから社会に出てこないで欲しい
お前のことだよ>>164
0181デフォルトの名無しさん
2013/02/16(土) 20:04:00.16大学の先輩で使ってる人いたけど卒業してから速攻縁切ったわw
メールも電話も着拒したw関わりたくないもんw
0182デフォルトの名無しさん
2013/02/16(土) 20:09:10.00Hoge降臨だからしょうがないか
0183デフォルトの名無しさん
2013/02/16(土) 20:09:38.39プログラムが楽しくて何か発散せずにはいられない、
なんていうのかな、、奇をてらっているというか、
ノリが不自然というか、キョロ充というか、
白々しいというか、、要するにくだらない人が多い気がする。
0184デフォルトの名無しさん
2013/02/16(土) 20:33:23.610185デフォルトの名無しさん
2013/02/16(土) 20:33:57.95それ向こうから縁を切られてるよ
0186デフォルトの名無しさん
2013/02/16(土) 20:51:22.00自分がhoge使ってるからそういうことにしとかないと耐えられないんだねw
縁を切られたトラウマでもあるのかねwかわいそうw
飲みに誘うメールが来たからその場で着拒してるのに向こうから切られてるとかwウケルw
0187デフォルトの名無しさん
2013/02/16(土) 21:00:16.230188デフォルトの名無しさん
2013/02/16(土) 21:03:46.850189デフォルトの名無しさん
2013/02/16(土) 21:42:28.180190デフォルトの名無しさん
2013/02/16(土) 23:18:23.61ありがとです。
ここに書き込む前に少しググってみましたが、OpenGLやDirectXといった
ライブラリを利用する、というページをいくつも見ました。
特に、CよりもC++の方が圧倒的にネットの遺産はあるようで、
観念してC++から勉強始めたいと思います。
>>171
0からというわけじゃなく、たぶんライブラリーを使うのかと。
調べたらC++とかでもありそうです。自分はCはどうなのか、というのが
凄く気になっていて。
>>178
仰る通り。特にC++の情報が多いみたいですね。
0191デフォルトの名無しさん
2013/02/17(日) 00:31:13.87hoge使っても平気な神経はどうかと思うよ
0192デフォルトの名無しさん
2013/02/17(日) 00:49:59.710193デフォルトの名無しさん
2013/02/17(日) 02:16:08.960194デフォルトの名無しさん
2013/02/17(日) 02:28:55.89幼年期の生育環境や親のしつけに強い問題があったと推測される。
0195デフォルトの名無しさん
2013/02/17(日) 02:36:48.11puyoにします。
0196デフォルトの名無しさん
2013/02/17(日) 02:42:26.65プログラマは合理的でなければならない
hogeには使用すべき合理的な理由がない
加えて、hogeは日本独特のものである
hogeを使うということはhogeに慣れ親しんでいる可能性が非常に高い
世界のプログラマ人口の中でも日本語を使用する人口はごくわずかであり、そのわずかな言語圏にしか存在しないhogeに慣れ親しんでいるということは
普段のプログラミングに関する調査や学習で利用するウェブサイトにおいて、日本語のウェブサイトを見ている率がかなり高い
情報量はその言語の利用者数に比例するため、例えば日本語の情報は英語の情報に比べると極めて少数であり
わざわざ情報量の少ない言語に絞って学習や調査を行うという自らハンディキャップを課す奇行を行たうえで
他人に質問するという異常な行為を行う者はプログラマの中から排除すべきだから
0197デフォルトの名無しさん
2013/02/17(日) 04:27:57.220198デフォルトの名無しさん
2013/02/17(日) 05:01:15.500199デフォルトの名無しさん
2013/02/17(日) 05:11:35.030200デフォルトの名無しさん
2013/02/17(日) 05:29:34.160201デフォルトの名無しさん
2013/02/17(日) 05:43:11.65ム板にIDがないのをいい事に
こいつ一人だけが必死でhogeを叩いているだけ
0202デフォルトの名無しさん
2013/02/17(日) 07:04:47.43そうやって仮想敵を一本化するのって流行ってるの?
マイノリティ化して心の安定保ってるみたいだけど妄想垂れ流しで阿呆っぽい。
本当にただのアフォなのかもしれんが。
・・・と思ったら馬鹿でキチガイって自己紹介してた。
0203デフォルトの名無しさん
2013/02/17(日) 07:26:42.840204デフォルトの名無しさん
2013/02/17(日) 07:50:30.40Hogeが禁止にならない限りいずれはああなるような気がする
てかすでになり始めてるか
0205デフォルトの名無しさん
2013/02/17(日) 08:54:43.10hogeを禁止するのではなくてhoge発狂馬鹿を出入り禁止にするべきだろう。
hoge発狂馬鹿を徹底的にたたけばいい
0206デフォルトの名無しさん
2013/02/17(日) 09:06:25.620207デフォルトの名無しさん
2013/02/17(日) 09:54:11.30そうすればwin32apiスレみたいに炎上して楽しくなる!
まともな質問者&回答者はそれで去っていくし面白そう!
次からhoge発狂厨がきたら叩きまくろう!
0208デフォルトの名無しさん
2013/02/17(日) 10:15:29.980209デフォルトの名無しさん
2013/02/17(日) 10:16:57.280210デフォルトの名無しさん
2013/02/17(日) 10:30:52.650211デフォルトの名無しさん
2013/02/17(日) 10:43:09.24ごめん、引用元はなんだったっけ
0212デフォルトの名無しさん
2013/02/17(日) 10:43:32.64お前が基地
0213デフォルトの名無しさん
2013/02/17(日) 11:54:37.25「オネアミスの翼」だっけ?
0214デフォルトの名無しさん
2013/02/17(日) 12:38:01.680215デフォルトの名無しさん
2013/02/17(日) 13:35:25.040216デフォルトの名無しさん
2013/02/17(日) 15:50:30.02↑
見事に釣れたキチ
身に覚えがあるんだろうな
0217デフォルトの名無しさん
2013/02/17(日) 15:52:03.46そのキチに激しく叩かれて、hogeアンチキチなってしまった奴が非常に多いから
hogeが出ると激荒れになるにはしょうがない。
hogeアンチキチは真性じゃないからhogeが出ない限りあまり発狂しない
0218デフォルトの名無しさん
2013/02/17(日) 15:58:19.890219デフォルトの名無しさん
2013/02/17(日) 16:13:59.81プログラマーはあの猫激ラブ片山見たいなのが極普通って感じだからな
それ以前には、江東区で女をばらばらにしてトイレに流した奴がいたよな
キチだからプログラマーになるのか、プログラマーの職業病がキチなのか...
0220デフォルトの名無しさん
2013/02/17(日) 16:33:55.13> 見事に釣れたキチ
すごいなぁ、まだ後釣りとかしてる奴がいるんだ…
0221デフォルトの名無しさん
2013/02/17(日) 18:16:40.960222201
2013/02/17(日) 19:23:38.250223デフォルトの名無しさん
2013/02/17(日) 21:25:49.10これからはhoge厨がアンチhoge厨を叩くらしいから叩き合いになってさらに大荒れになるよw
0224デフォルトの名無しさん
2013/02/17(日) 22:05:32.070225デフォルトの名無しさん
2013/02/18(月) 04:46:40.96スレを荒らしたくてHOGE使ってるだけの可能性もある
特に質問に対してHOGE叩きとマジレスの両方が来てる場合に、マジレスのほうにすらレス返さずに消えてる奴とかな
まあ無意識にHOGEを使う奴もわざとHOGE使ってスレを荒らすことを生き甲斐にしてる奴も同程度に頭おかしいけど
0226デフォルトの名無しさん
2013/02/18(月) 05:04:28.590227デフォルトの名無しさん
2013/02/18(月) 06:12:26.780228デフォルトの名無しさん
2013/02/18(月) 06:53:43.390229デフォルトの名無しさん
2013/02/18(月) 08:31:09.43反応しなきゃいいのにな
簡単なこと
0230デフォルトの名無しさん
2013/02/18(月) 09:35:21.490231デフォルトの名無しさん
2013/02/18(月) 10:53:42.23本も買えない乞食が見るだけだからそれでいいのかもしれんがww
0232デフォルトの名無しさん
2013/02/18(月) 11:30:00.580233デフォルトの名無しさん
2013/02/18(月) 11:55:27.59そういえばあれ、頭はどうしたんだろ
頭蓋骨をトイレに流すまで細かくするとか難しくね?
白骨化したやつならまだしも生の状態からだろ
0234デフォルトの名無しさん
2013/02/18(月) 20:09:15.04apiスレをいつもほげスレにしてあげないと、このスレは死ぬな
0235デフォルトの名無しさん
2013/02/18(月) 22:09:40.130236デフォルトの名無しさん
2013/02/18(月) 23:35:13.51肉は腐敗すると膨張する。よって冷蔵庫を一つ用意し、ばらばらにしたのを冷蔵して少しずつ捨てる
0237デフォルトの名無しさん
2013/02/18(月) 23:46:31.36しかも頭までトイレに流せるくらい小さくって言ったら4センチ四方以下くらいにしなきゃならない。
あの事件で逮捕された奴って被害者に好意を持ってたらしいけど、好意を持ってた相手の頭をバラすとか普通無理。
そんな作業するくらいなら自首するほうがマシな気がする。
0238デフォルトの名無しさん
2013/02/19(火) 00:47:00.75こんな感じのヘッダファイルを作って
hogehoge.h
#define MY_INCLUDE
typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
さらにこのヘッダファイルをインクルードするヘッダファイルを作って
foo.h
"include "hogehoge.h"
でコンパイルをかけたところ、
hogehoge.h:warning: useless keyword or type name in empty declaration
hogehoge.h:warning: empty declaration
hogehoge.h:warning: useless keyword or type name in empty declaration
hogehoge.h:warning: empty declaration
と言うエラーが出たので、ソースをプリプロセスしたところ、
たしかに
# 1 "hogehoge.h" 1
と空白でした。
初めて見たワーニングなのですが、
このエラーはどういうときに起きる物なのでしょうか?
0239デフォルトの名無しさん
2013/02/19(火) 00:50:03.06^?
0240デフォルトの名無しさん
2013/02/19(火) 01:02:33.200241デフォルトの名無しさん
2013/02/19(火) 01:28:55.360242デフォルトの名無しさん
2013/02/19(火) 01:29:09.460243デフォルトの名無しさん
2013/02/19(火) 01:45:56.22まともな感覚してたらそもそもhogeなんて使わないわけだし
hoge使ってる時点で精神異常
みたいな感じのアンチレスで満足ですか?>荒らしの>>238
0244デフォルトの名無しさん
2013/02/19(火) 01:53:27.71ワォーニング
で良かった?
0245デフォルトの名無しさん
2013/02/19(火) 02:49:57.83でよかった?
0246デフォルトの名無しさん
2013/02/19(火) 02:58:28.540247デフォルトの名無しさん
2013/02/19(火) 07:00:52.52warm ウォーム
warn ウォーン
warning ウォーニング
worm ワーム
通常のar, orと、war, worのar, orは発音が違う。
warm wormと覚えよ。と教わった。
0248デフォルトの名無しさん
2013/02/19(火) 09:26:57.20言語の発音と日本語表記になんか関係でもあるのか?
0249デフォルトの名無しさん
2013/02/19(火) 09:47:23.27世界に発信できるソフトウェアを作れない
0250デフォルトの名無しさん
2013/02/19(火) 10:17:22.28ホントは、award(アウォード、賞)
0251デフォルトの名無しさん
2013/02/19(火) 13:06:52.100252デフォルトの名無しさん
2013/02/19(火) 13:12:52.550253デフォルトの名無しさん
2013/02/19(火) 13:16:58.540254デフォルトの名無しさん
2013/02/19(火) 13:20:22.860255デフォルトの名無しさん
2013/02/19(火) 13:38:48.800256デフォルトの名無しさん
2013/02/19(火) 15:01:02.490257デフォルトの名無しさん
2013/02/19(火) 15:05:53.73ゥォァーニンじゃね?
0258デフォルトの名無しさん
2013/02/19(火) 15:18:31.56あってはならんのだ、この世に存在してはならんのだァー!
0259デフォルトの名無しさん
2013/02/19(火) 17:52:10.51発音とか関係ねえよ
0260デフォルトの名無しさん
2013/02/19(火) 18:59:24.71その通り
warningは英語、ワーニングは日本語
お前らが使っているイギリスって英語なのか?
イギリスって言っている奴っては恥ずかしい奴だよな
イギリスでイギリスって言って通じるのか
日本語のワーニングの元が英語のwarningってだけ
さすがhogeスレだけあってキチで低脳が多いな
0261デフォルトの名無しさん
2013/02/19(火) 19:33:14.590262デフォルトの名無しさん
2013/02/19(火) 19:54:51.050263デフォルトの名無しさん
2013/02/19(火) 20:18:09.080264デフォルトの名無しさん
2013/02/19(火) 21:04:16.200265デフォルトの名無しさん
2013/02/19(火) 21:11:09.74ランダムウォーク(英語: random walk)
- Wikipedia
0266デフォルトの名無しさん
2013/02/19(火) 22:25:08.640267デフォルトの名無しさん
2013/02/19(火) 23:07:40.350268デフォルトの名無しさん
2013/02/19(火) 23:13:34.03せめて if (ptr == NULL) と書いてほしいですし、
一番分かりやすいのは if (!ptr) だと思います。
みなさんはどう書きますか?
0269デフォルトの名無しさん
2013/02/19(火) 23:37:42.89{
;
}
else
0270デフォルトの名無しさん
2013/02/19(火) 23:38:32.84直感的に書きづらいこともあるけど、万が一「変数 = 定数」と誤記した場合のことを考えると書き直したほうが安心できる。
!=とか<=とか代入にならない場合だと意味的に見やすい方で、というかそのときの気分で書く糞pgですが。
0271デフォルトの名無しさん
2013/02/19(火) 23:39:47.97でも俺もptr == NULLって書いちゃうけどね
!ptrは一瞬首をかしげるから視認性重視でptr == NULlかな
0272デフォルトの名無しさん
2013/02/19(火) 23:47:45.85if (!isNULL(ptr)) する。
0273デフォルトの名無しさん
2013/02/19(火) 23:49:26.58コンパイラが教えてくれるしね。
むか〜しのCマガジンで
if(fp) と書くより if(fp!=NULL) の方がいいってのはあったなぁ。
まぁ結局慣れなんだけど。
0274デフォルトの名無しさん
2013/02/19(火) 23:59:30.540275デフォルトの名無しさん
2013/02/20(水) 00:32:36.420276デフォルトの名無しさん
2013/02/20(水) 00:42:50.71習性ってなかなか直らないモンなんだな。
0277デフォルトの名無しさん
2013/02/20(水) 01:54:54.04まあ、別に問題は無いしな。
0278デフォルトの名無しさん
2013/02/20(水) 09:57:57.93A=Bなら代入で
A=B?ならbool値を返す、とかなら・・・(でもこれはこれでBが長くなるとまた問題になりそうだが)
0279デフォルトの名無しさん
2013/02/20(水) 10:12:24.32頭が条件判断のカッコの中では=を2連打するように切り替わる。
0280デフォルトの名無しさん
2013/02/20(水) 10:25:44.770282デフォルトの名無しさん
2013/02/20(水) 12:01:56.36A=B?でなくて
A?=Bとか
0283デフォルトの名無しさん
2013/02/20(水) 12:59:30.550284デフォルトの名無しさん
2013/02/20(水) 13:03:20.69俺も横着したことは殆ど無いけど、それでも入力ミスは発生するんじゃないかな。
0285デフォルトの名無しさん
2013/02/20(水) 13:32:11.58条件式の中で代入する時は俺は必ずカッコで囲んでいる
実際そうすると警告も消える
0286デフォルトの名無しさん
2013/02/20(水) 14:41:22.690287デフォルトの名無しさん
2013/02/20(水) 15:35:22.34コンパイラに「ここはわざと代入してんだよ」と教えることも出来る
0288デフォルトの名無しさん
2013/02/20(水) 16:39:45.910289デフォルトの名無しさん
2013/02/20(水) 17:47:25.15!演算子に副作用がある型だと死ねるな。
0290デフォルトの名無しさん
2013/02/20(水) 17:55:20.710291デフォルトの名無しさん
2013/02/20(水) 19:03:58.49お前は何を言ってるんだ
0292デフォルトの名無しさん
2013/02/20(水) 20:15:23.05関数がboolを返すことと副作用があることは矛盾しないだろ
0293デフォルトの名無しさん
2013/02/20(水) 22:08:31.51蛙かよ。
0294デフォルトの名無しさん
2013/02/21(木) 19:28:53.07#include <iostream>
using namespace std;
class Parent {
private: class Child {
private: string name;
public: void setName(string name) { this->name = name; }
public: string getName() { return this->name; }
};
private: Child child;
public: Child getChild() { return this->child; }
};
int main() {
Parent parent;
parent.getChild().setName("ko");
cout <<parent.getChild().getName()<< endl;
}
これで子の名前が帰ってこないのはなぜなのですかね?
0295デフォルトの名無しさん
2013/02/21(木) 19:59:53.19C#使ってたんだろうけど
parent.getChild().setName("ko"); このgetChildが返すインスタンスと
cout <<parent.getChild().getName()<< endl; ここでのgetChildが返すインスタンスは別物です
0296デフォルトの名無しさん
2013/02/21(木) 20:05:19.310297デフォルトの名無しさん
2013/02/21(木) 20:06:41.46C++ で、クラスを返す関数を書くと、その関数が返すクラスは「一時変数」。
return this->child
とかいたときに関数の外にかえってくる Child は、this->child そのものではなく、「this->childと「値が同じ」」別物だ。
0298297
2013/02/21(木) 20:17:19.35http://ideone.com/upFDqf
0299297
2013/02/21(木) 20:22:20.29とかいたとき、this->child とは別のインスタンスだが「「内容」は同じ」という点に着目すると、こうともかけるね
http://ideone.com/iCG9Mi
0300デフォルトの名無しさん
2013/02/21(木) 20:27:01.69C++の基本からやり直した方がいいよ
0301デフォルトの名無しさん
2013/02/21(木) 20:51:02.110302デフォルトの名無しさん
2013/02/21(木) 20:51:35.62すみません、やり直すどころか昨日はじめました
0303デフォルトの名無しさん
2013/02/21(木) 20:52:41.98じゃあ基本からやった方がいいよってことでw
0304デフォルトの名無しさん
2013/02/21(木) 20:57:26.62Childクラスを内部クラスにしない書き方も練習しようと思ったのですけど、その場合たとえば条件として
・ChildクラスのメソッドはParentクラスからしか呼び出せない。
・Childクラスは独立してインスタンス化したくない。
のとき、うまくかけるんですかね
Parentクラスを通してしか操作する気がないChildクラスであるならば、他から参照できないほうがいいですよね?
0305デフォルトの名無しさん
2013/02/21(木) 21:01:55.29うん
そういう時は普通に内部クラスにするよ
0306デフォルトの名無しさん
2013/02/21(木) 21:11:20.31ですよね、ありがとうございます。
あれ、なんでインスタンス化の話になってんだろと思ったら設計を勘違いしてました。入れ子にしたんだからこうするべきでしたね
#include <iostream>
#include <windows.h>
using namespace std;
class Parent {
private: class Child {
private: string name;
public: void setName(string name) { this->name = name; }
public: string getName() { return this->name; }
};
private: Child child;
public: void setChildName(string name) { this->child.setName(name); }
public: string getChildName() { return this->child.getName(); }
};
int main() {
Parent parent;
parent.setChildName("ko");
cout <<parent.getChildName()<< endl;
}
0307デフォルトの名無しさん
2013/02/21(木) 21:15:09.91でもコピーコンストラクタや
テンポラリオブジェクトについては
別途調べておいた方がいいよ
0308デフォルトの名無しさん
2013/02/21(木) 22:02:15.16using namespace std;
class Animal {
public: enum AnimalType { DOG, TIGER, TANASIN };
private: AnimalType animalType;
public: Animal() {}
public: Animal(AnimalType animalType) { this->animalType = animalType; }
public: AnimalType getAnimalType() { return this->animalType; }
public: void noise() {
switch(animalType) {
case DOG:
cout <<"Ruff Ruff"<< endl;
break;
case TIGER:
cout <<"Glug Glug"<< endl;
break;
}
}
};
int main() {
Animal *pappy = new Animal(Animal.AnimalType.DOG);
}
これができないのはどうして?
0309デフォルトの名無しさん
2013/02/21(木) 22:10:51.76だから基本からやれってwww
文法分かってねーだろw
0310デフォルトの名無しさん
2013/02/21(木) 22:16:27.12いや、コミュニケーションしましょうよ。あなたも復習。私も勉強。
Animal *pappy = new Animal(Animal.AnimalType.DOG);
ここは通りましたが、
pappy.noise();
で泣いてくれません;;
0311デフォルトの名無しさん
2013/02/21(木) 22:17:26.54pappy.noise();
でパピーが鳴いてくれない
0312デフォルトの名無しさん
2013/02/21(木) 22:18:08.80基本的すぎて何も勉強にならねえよwww
ていうかエラーメッセージくらい嫁
0313デフォルトの名無しさん
2013/02/21(木) 22:25:20.14this.name = name;
はダメで、
this->name = name;
は習ったけど次は->をどこに使うのよ?
0314デフォルトの名無しさん
2013/02/21(木) 22:27:40.800315デフォルトの名無しさん
2013/02/21(木) 22:37:33.350316デフォルトの名無しさん
2013/02/21(木) 22:40:45.050317デフォルトの名無しさん
2013/02/21(木) 22:51:17.830318デフォルトの名無しさん
2013/02/21(木) 23:02:42.29http://ideone.com/mxdNe7
0319デフォルトの名無しさん
2013/02/21(木) 23:08:30.040320デフォルトの名無しさん
2013/02/21(木) 23:09:28.11Animal *pappy = new Animal(Animal::DOG);
として pappy には Animal へのポインタが入っているのだから、
pappy が指すAnimal 型オブジェクトのメソッド=メンバ関数を呼びだすには、
pappy->noise();
とするしかない。
この辺を間違えたらこんな風に炎上しちゃいます。でもこの人、当時は全然わけがわからなかったんだろうな‥‥
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
0321デフォルトの名無しさん
2013/02/21(木) 23:09:52.82なんとなくやってしまった‥
0322デフォルトの名無しさん
2013/02/21(木) 23:10:56.42そんな事もあった
0323デフォルトの名無しさん
2013/02/21(木) 23:11:35.23よく分からんが糞コンパイラでハマったのか?
0324デフォルトの名無しさん
2013/02/21(木) 23:18:49.85逆にJava/C#から入ってきた人のコードがすごくみえてしまうのですけど最初からこんな風におもいつくのかと by K&R1C脳
0325デフォルトの名無しさん
2013/02/21(木) 23:30:46.610326デフォルトの名無しさん
2013/02/21(木) 23:34:57.42C++は「出来るだけ新しいキーワードは増やさない」という標準化委員会の意向があるので
同じキーワードや同じ書き方にいろんな意味を持たせる傾向があって、最初は「なにこれ?」と
思うかも知れんね
0327デフォルトの名無しさん
2013/02/21(木) 23:48:43.18純粋仮想関数の = 0; は許せたけど、C++11ではclassに = 0; を付けると sealed、
つまりこれ以上継承出来ない意味になったんだっけ
boostにnonderivableというのがあったけど
0328デフォルトの名無しさん
2013/02/21(木) 23:52:03.29= delete; と = default; なんだね
こういう変態的な文法だからいろいろ言われるのか
まあ仕方ない
0329デフォルトの名無しさん
2013/02/21(木) 23:57:13.60ああ移譲の話か
それコンポジションでも良く使うテクニックなので覚えておこうね
0330デフォルトの名無しさん
2013/02/22(金) 00:06:50.36ポインタ使えるところからJavaやC#きたらそれはそれで恥ずかしいコード書く
0331デフォルトの名無しさん
2013/02/22(金) 00:09:40.36あと、this.nameができるようにしろ。アスタリスクはなくせ。
0332デフォルトの名無しさん
2013/02/22(金) 00:12:45.61だからといって
*pappy.noise();
はダメなんでしょ?
うちのpappyをなめてるとしかいえない。
0333デフォルトの名無しさん
2013/02/22(金) 00:23:14.49ならよい。基本的にa->bは(*a).bと同じ
0334デフォルトの名無しさん
2013/02/22(金) 00:33:08.05ホントだ。
だけど、
Animal *pappy = new Animal(Animal.AnimalType.DOG);
がダメなのが許せない。
だってさ、Animalクラスの中で「AnimalType」っていう名前でenumを定義したんだよ?
何故に
Animal::DOG
で呼び出せちゃうわけ??
つまり、Animalクラス内にAnimalTypeとは別のenum、
public: enum AnimalMoveType { WAIT, MOVE, WALK }
があったとして、
Animal::WAIT
で呼び出せちゃうとAnimalTypeとAnimalMoveTypeはまるで同じenum内にあるみたいじゃん。
これは正直どうなの!?
javaなら
new Animal(Animal.AnimalType.DOG);
で安全に呼び出せるんだけど。
0335デフォルトの名無しさん
2013/02/22(金) 00:36:01.70どうでもいいけど、なんでいちいちnewするの?
0336デフォルトの名無しさん
2013/02/22(金) 00:42:04.84pappyのほかにpotiが飼いたい場合どうするのよ
0337デフォルトの名無しさん
2013/02/22(金) 00:43:11.13逆に聞きたい。「何故わざわざ部品として将来利用し辛い形に設計するの?」
0338デフォルトの名無しさん
2013/02/22(金) 00:44:53.15TANASHINってどんな生き物だ…と思ったら
ttp://ja.uncyclopedia.info/wiki/Tanasinn
のことなのね
0339デフォルトの名無しさん
2013/02/22(金) 00:55:22.71caseやif文で分岐させるようにしてると悪い癖が付くよ
0340デフォルトの名無しさん
2013/02/22(金) 00:57:09.95え!
C++ってenum switch非推奨なの?Javaじゃありえないんだけど。
0341デフォルトの名無しさん
2013/02/22(金) 00:59:32.02じゃあJavaでも使ってろよ
0342デフォルトの名無しさん
2013/02/22(金) 01:05:29.06なになにっ!?
C++はそんなに他からの学習者を寄せ付けない方針なの!?
確かに心当たりある。
javaはCから来た人にも導入しやすいように
int[] a = new int[3]; も
int a[] = new int[3]; もおkにしてる。
だけど!C++は前者を許してくれない。ひどい。もっと互いに仲良くするべき。
0343デフォルトの名無しさん
2013/02/22(金) 01:07:35.710344デフォルトの名無しさん
2013/02/22(金) 01:08:23.58this.name = name;
も許してほしい。
あと、ポインタは難しいのでなくす方針でおながいしますね。
0345デフォルトの名無しさん
2013/02/22(金) 01:08:44.57>>343
相手にすんな
0346デフォルトの名無しさん
2013/02/22(金) 01:11:26.42仲良くしようや。
0347デフォルトの名無しさん
2013/02/22(金) 01:12:42.640348デフォルトの名無しさん
2013/02/22(金) 01:13:32.900349デフォルトの名無しさん
2013/02/22(金) 01:14:45.26http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1416857439
これでどうだ
0350デフォルトの名無しさん
2013/02/22(金) 01:15:29.42日本語おかしいですよ?
日本人ですか?
言うなら「恩を仇で返す」でしょ?
0351デフォルトの名無しさん
2013/02/22(金) 01:16:09.56それお前が書いたんだろ
自作自演みっともないからやめろ
0352デフォルトの名無しさん
2013/02/22(金) 01:18:56.00人が言語に合わせるんだ
0353デフォルトの名無しさん
2013/02/22(金) 01:19:40.350354デフォルトの名無しさん
2013/02/22(金) 01:28:42.61http://ideone.com/ZdF5qV
http://ideone.com/6nYLTB
java でも enum switch はためらわれるんじゃないかなあ‥‥
0355デフォルトの名無しさん
2013/02/22(金) 01:30:08.22使いにくいことを売りにして、そういう趣味の人を囲い込んでるのだろうか・・・。
0356デフォルトの名無しさん
2013/02/22(金) 01:34:22.10C++ のほうが古いし泥臭いし仕方がないっす。たしかに後発のjavaの方が合理的だから許してね
C/C++はオブジェクト型(参照型)に対してもプリミティブ(単純型)と同じように名前で実体全部を表現することを含ませているんです
0357デフォルトの名無しさん
2013/02/22(金) 01:34:40.05だから世界はお前中心に回っているわけではない
嫌なら無理して使わなくていいから
0358デフォルトの名無しさん
2013/02/22(金) 01:37:32.69えっ!?それはどうしてなの?
public static final int DOG = 0;
public static final int TIGER = 1;
としてたなら、直接変数に3や4を入れちゃうと・・・ってことでenumは便利だと。
だけど、implementsですむならimplementsしろってこと?
ちょっとわからない。
「extendsするより可能ならimplementsにしろ」ってのは聞いたことあるけど、enum switchがためらわれるなんてきいたことがないよ!どうなってるの
0359デフォルトの名無しさん
2013/02/22(金) 01:38:27.48もうお前うざいからJavaスレに逝って帰ってくんな
0360デフォルトの名無しさん
2013/02/22(金) 01:39:10.05C++とC/C++って別なの?
C かつ C++ イコール C/C++と表現してるわけじゃなくて?
0361デフォルトの名無しさん
2013/02/22(金) 01:42:10.25ここで学習をやめるべきかな?それとも続けたらわかるかなぁ。
0362デフォルトの名無しさん
2013/02/22(金) 01:43:14.90>>356
java のオブジェクト型/参照型は new 以外の生成法がないから、a->b() と a.b() を区別する必要がない。
C/C++ はオブジェクト型に対して new を書かないオブジェクト生成がありうるのです。
そして、this はポインタと決まっているので。
java にほしいのは参照渡しだなあ‥‥C# にはあるのに。
0363デフォルトの名無しさん
2013/02/22(金) 01:45:46.09いい加減にスレ違いです
0364デフォルトの名無しさん
2013/02/22(金) 01:51:10.97>new を書かないオブジェクト生成がありうるのです。
これって例えばどういう利点があるの?確かにはじめC++で悩んだのが、
Test test;
test.method();
でちゃんとインスタンス化?されているらしく、動いたこと。
故にnewはなくてもいいんだなと単純に解釈したが、newはnewで存在していた。そしてポインタにぶちあたった。
>a->b() と a.b() を区別する必要
ここが知りたいです。教えてください。
0365デフォルトの名無しさん
2013/02/22(金) 01:53:28.51animal を分類区分けして dog と tiger という種別をつくるんですよね
new するときに dog にするか tiger にするかを決めて new し、それを animal で持つんだったら、これは継承で表現するのがOO的じゃないかな
animal のサブクラスが100個のメソッドを持つとき、そこに新たに cat というサブクラス=種別を導入した場面を考えると、
各メソッドが種別ごとに enum switch でごちゃごちゃかいてあったら、ちらばっている100個のメソッドすべてに switch のエントリーを追加しなくちゃならないじゃない?
いや、継承でも cat 用のメソッドを書かなければならないのは同じだけれども、一箇所にまとまるので、すくなくとも書きやすいし把握しやすいと思う
abstract/interface 、C++ 用語での virtual って、そういう enum switch を隠蔽してくれるためのものだと思うのです
C++ のコード生成結果に enum switch が入っています。java も同じことだと思うけど
0366デフォルトの名無しさん
2013/02/22(金) 01:54:41.24C と C++ は別ですが、重なる部分はとても大きいので、重なる部分を意識して C/C++ とかきました、今の場合は「ポインタ」
0367デフォルトの名無しさん
2013/02/22(金) 01:55:57.53近くにいたらぶっ飛ばすけど
template <typename T>
class arrow
{
public:
T* operator ->(void) { return static_cast<T*>(this); }
const T* operator ->(void) const { return static_cast<T*>(this); }
};
class foo :public arrow<foo>
{
0368デフォルトの名無しさん
2013/02/22(金) 01:56:50.44http://cruel.org/freeware/hacker.html
>本気でプログラミングをするなら、C を勉強するしかありません。
0369デフォルトの名無しさん
2013/02/22(金) 02:05:13.910370デフォルトの名無しさん
2013/02/22(金) 02:06:50.14Test test; test.method();
静的/スタティックにインスタンスを確保することを指します。確保の仕方としてはコストが非常に低いのです。
java でもプリミティブ型(int とかね)はほぼこれに近いのですが、C/C++ ではクラスも静的に確保できます。
一方、C/C++ で動的/ダイナミックに確保するのなら
Test *test = new Test(); とやるしかない。これはコストが余計にかかります。
C/C++ は動的と静的でインスタンスを表現する方法も区別します。静的と動的とは別だから当然です
静的:Test test; test.method()
動的:Test *test = newvTest(); test->method(); delete test;
java では参照型の場合には動的な確保しかないのです。だから -> とか . とか分ける必要はなく、ドットだけで代表させてしまったのですね
あえて静的・動的を使い分けてがんがんやる用途でもなければ、java の方が単純でわかりやすいでしょうね
0371デフォルトの名無しさん
2013/02/22(金) 02:09:22.35第一義的にnewは遅い。動的メモリ割り当てを行うので、ランタイムやOSに呼び出しを掛けないといけない。
自動GCのないC++で全てのオブジェクトをnewするととんでもなく遅くなる。
一方newを使わないスタック割り当ては恐ろしく速い。というのも(スタックポインタの)数値を加算するだけだから。
加えてスタック上の(newしていない)オブジェクトはスコープを外れると自動的に解体される。
GCがないC++にとってこれは非常に重要な特性となる。
なぜならnewしたオブジェクトは(GCがないので)勝手に破棄される事がなく、放置するとメモリリークというバグになるからだ。
ポインタはまた少し違う。C/C++では「オブジェクトがどこにあるか」についてプログラマが掌握できる。
ということは、プログラム上でオブジェクトのある場所を表現する必要がある。それがポインタ。
オブジェクトがスタック上にあるならそれは目の前にあるのでアドレスを持っている必要はない。
従ってポインタを通す必要もない。
一方「別の場所」からオブジェクトを持ってくる場合もある。そういうときは(場所を表現している)ポインタで渡される。
0372デフォルトの名無しさん
2013/02/22(金) 02:09:52.53驚愕の真実w
0373デフォルトの名無しさん
2013/02/22(金) 02:13:10.28だってさあ、C++では仮想関数の呼び出しってポインタかリファレンスを通すしかないじゃん
0374デフォルトの名無しさん
2013/02/22(金) 02:13:50.92若干違うよね。そこらへんはCをやってないとピンとこないかも。
0375デフォルトの名無しさん
2013/02/22(金) 02:14:54.54きょうび、java もある程度語ることができなければc++erとしてどうかと思うのです
0376デフォルトの名無しさん
2013/02/22(金) 02:16:06.16スレ違いの荒らしがなに偉そうに語ってんの?
0377デフォルトの名無しさん
2013/02/22(金) 02:21:13.27JavaもC#も分かるわい馬鹿。このスレで敢えてしないだけだ
KYは去れ
0378デフォルトの名無しさん
2013/02/22(金) 02:22:37.17区別をきちんとつけられるようにするべき。さらにはコンパイラが宣言を
どう解釈し、どういうコンパイルを行うのか想像できるべき。
0379デフォルトの名無しさん
2013/02/22(金) 02:26:34.90うーんっと、なんとなく言ってる意味はわかったのだけれど、
Animalから枝分かれしたDOGやTIGERクラスからインスタンス化することに違和感を感じてしまう。
確かに継承したほうが見やすいし、個としてはまとまる気もする。
あくまでAnimalという次元の中からDOGやTIGERは生成されてほしいという思いがある。
というのも、「犬やトラがAnimalを道具として装備してる状態」が自分には新鮮だった。
「鳴かない動物がある」とすれば、Animalをimplementsしたくないですよね?
だけど、鳴かない動物は紛れも鳴く動物であり、Animalであると思うんですよ。
0380デフォルトの名無しさん
2013/02/22(金) 02:26:51.30できるというのならば、java から c++ に移行しようとしている初学者を適切に導いてスレが荒れるのを防止してくださいな
「敢えてしない」のではなくて、「できない」のではないの?
0381デフォルトの名無しさん
2013/02/22(金) 02:31:50.05んー、ちょっとよくわからないけれども、思想をインプリに反映させたい場合もあるんですね
java の人としゃべっているとこういう話がメインになるからわりと新鮮、c/c++er だと >>371 に軸足が移りがちなんですね
0382デフォルトの名無しさん
2013/02/22(金) 02:36:55.08C++
class_a a;
a.member();
これをJavaで書くと
class_a a = new class_a();
または
static class_a a;
で
a.member();
でほぼ等価になるかな。厳密には等価じゃないけど。
C++はポインタでなく実体宣言すると、コンパイル時点で
コンストラクタこみの動作になる。
0383デフォルトの名無しさん
2013/02/22(金) 02:40:02.93>思想をインプリに反映させたい場合もあるんですね
むしろそうでないと自分の場合設計できないんですよね・・・。
可能な限り自然界と近い形にしないと自分の頭の中で処理がまわらないというか融通がきかなくなる。
「確かに自然界とは違うが、処理的にはこっちのほうが得だし、便利だし」っていう発想でコードを書き上げる自身がない。
何か遠回りな書き方してる気はしながらも安心感に負けちゃうというか。
0384デフォルトの名無しさん
2013/02/22(金) 04:13:13.890385デフォルトの名無しさん
2013/02/22(金) 07:26:59.71とにかくC++を最初からやれ
基礎の基礎の基礎から
0386デフォルトの名無しさん
2013/02/22(金) 08:40:07.55ほら出たこういう攻撃
自分が悪いのを棚に上げて他人ばかり悪いように言うあなたの性格が荒れる原因に
なっていると分からない時点で立派な荒らしですよ
俺も元はJava使いだからね
しかしあんたと違ってスレを荒らさずにC++も使えるようになったから
0387デフォルトの名無しさん
2013/02/22(金) 08:41:50.07だからそう思うならJavaスレでC++の話を聞けよ
どうせ同じスレ違いならそっちの方が新鮮な話が聞けていいんでしょ、
あんたの理屈から言えば
C++スレに粘着する理由がわからん
0388デフォルトの名無しさん
2013/02/22(金) 09:16:33.540389デフォルトの名無しさん
2013/02/22(金) 09:17:16.75隔世の感があるな。
0390デフォルトの名無しさん
2013/02/22(金) 09:18:06.43いきなりC++要求してもな・・・
まずはAからだろ
0391デフォルトの名無しさん
2013/02/22(金) 10:16:56.910392デフォルトの名無しさん
2013/02/22(金) 11:20:56.910393デフォルトの名無しさん
2013/02/22(金) 12:24:31.94C++でclassをnewしないで確保したら、C#のstructと同じ。
そのときメンバには.でアクセスする。
C++でclassをnewで確保したら、C#のclassと同じ。
ただし、そのときメンバには->でアクセスする。
0394デフォルトの名無しさん
2013/02/22(金) 12:36:24.99>JavaスレでC++の話を
スレチといわれる、どっちみち
>そっちの方が新鮮な話が聞けて
え?JavaスレでC++の話を機構が、C++スレでjavaの話を気候がどっちもどっちですけど
0395デフォルトの名無しさん
2013/02/22(金) 12:40:23.77java から c++ に移行しようとしている初学者を適切に導いてね、これを荒れるとはいわないとおもうよ
>>317 とか >>342
> C++はそんなに他からの学習者を寄せ付けない方針なの!?
とかいわれてしまう事実をお忘れなく
0396デフォルトの名無しさん
2013/02/22(金) 12:48:42.300397デフォルトの名無しさん
2013/02/22(金) 13:01:37.10正直言語が変わると頭の中も切り替わるなぁ
相互でどういう機能とか考えたことがない。
C++/CLIだけは、ごっちゃになっているが・・・
0398デフォルトの名無しさん
2013/02/22(金) 13:09:20.770399デフォルトの名無しさん
2013/02/22(金) 13:16:21.07前言撤回ですか、言い訳としては幼稚過ぎますね
0400デフォルトの名無しさん
2013/02/22(金) 13:25:37.53> C++はそんなに他からの学習者を寄せ付けない方針なの!?
そのとおりです
あなたのような姿勢の人は寄せ付けません(というよりあなたのほうが寄り付くことをこばんでいます)
C++に限りませんが
私はプログラミング言語○○ができるからプログラミングの素人ではないんだ。
素人じゃないから今の知識を生かして新しいプログラミング言語でも簡単に習得できるはずだ
という姿勢ではその言語を正しく習得できません
新しいプログラミング言語に対しては自分は素人以下の何の知識もない初心者なんだという意識で過去の知識にとらわれず
新たな知識として基礎から全てを受け入れる姿勢で学習に臨むべきです
0401デフォルトの名無しさん
2013/02/22(金) 13:46:21.18ただ一応初心者歓迎 なので。
0402デフォルトの名無しさん
2013/02/22(金) 15:01:44.830403デフォルトの名無しさん
2013/02/22(金) 15:12:01.15> 素人じゃないから今の知識を生かして新しいプログラミング言語でも簡単に習得できるはずだ
>という姿勢ではその言語を正しく習得できません
その言語の是非はともかく、今回はそれらとは全く別の何かだと思う。
0404デフォルトの名無しさん
2013/02/22(金) 15:31:52.58アホなことしてたらやる気ないと思われても仕方ない
0405デフォルトの名無しさん
2013/02/22(金) 15:47:15.45書き込みから池沼具合がにじみ出ている
0406デフォルトの名無しさん
2013/02/22(金) 15:51:48.07いやまったくその姿勢だと思うよ
「俺はjava使えるしプログラミングの初心者じゃない」みたいな要らんプライドが透けて見える
0407デフォルトの名無しさん
2013/02/22(金) 16:12:19.25java使えてもC++はズブの初心者である事をまず認めろ
そうでないとここでは誰も相手にしない
0408デフォルトの名無しさん
2013/02/22(金) 17:16:59.34> 可能な限り自然界と近い形にしないと自分の頭の中で処理がまわらないというか融通がきかなくなる。
> 「確かに自然界とは違うが、処理的にはこっちのほうが得だし、便利だし」っていう発想でコードを書き上げる自身がない。
アスペじゃないの?
0409デフォルトの名無しさん
2013/02/22(金) 17:27:43.25ああ、何かuyっぽい言い回しだよな
0410デフォルトの名無しさん
2013/02/22(金) 17:35:44.92初学者でこれは厄介w
0411デフォルトの名無しさん
2013/02/22(金) 18:25:25.600412デフォルトの名無しさん
2013/02/22(金) 18:28:09.050413デフォルトの名無しさん
2013/02/22(金) 19:51:53.12http://toro.2ch.net/test/read.cgi/tech/1353308523/
0414デフォルトの名無しさん
2013/02/22(金) 21:36:56.71標準のAPIで作りたいです
0415デフォルトの名無しさん
2013/02/22(金) 21:39:37.890416デフォルトの名無しさん
2013/02/22(金) 21:42:10.80Qtとか
0417デフォルトの名無しさん
2013/02/22(金) 21:49:22.870418デフォルトの名無しさん
2013/02/22(金) 21:51:46.890419デフォルトの名無しさん
2013/02/22(金) 21:53:33.56最近はJavaとかC#もこっそり使ってるようだけど
他のは大抵VS C++かICLだな
0420デフォルトの名無しさん
2013/02/23(土) 01:47:20.610421デフォルトの名無しさん
2013/02/23(土) 01:52:23.500422デフォルトの名無しさん
2013/02/23(土) 12:31:56.120423デフォルトの名無しさん
2013/02/23(土) 12:33:24.160424デフォルトの名無しさん
2013/02/23(土) 12:34:36.060425デフォルトの名無しさん
2013/02/23(土) 12:35:33.110426デフォルトの名無しさん
2013/02/23(土) 12:38:27.650427デフォルトの名無しさん
2013/02/23(土) 12:41:31.400428デフォルトの名無しさん
2013/02/23(土) 13:14:44.11string mykey;
int myval;
//...and other member
public:
MY(string key) : mykey(key) {};
setval(int x) { myval=x };
};
void func() {
map<string,MY> xxx;
vector<MY *> yyy;
while() {
data* = getdata(); //ランダムにデータ取得
string key = data->getkey(); //上記のデータよりキー生成
MY my(key);
int val = data->getvalue();
my.setval(val);
it = xxx.insert(it, pair<string,MY>(key,my));
if(val==0) yyy.push_back(&it->second)
}
}
みたいな事をやりたいのですが、
コンストラクタ、コピーコンストラクタを減らすにはどうすればいいかな?
そんな事考えずにガンガン生成するもの?(ループ内のkey,my,pair辺り)
あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
(xxx内のMY.myvalが0のMYの一覧を後で知りたい)
0429デフォルトの名無しさん
2013/02/23(土) 13:53:57.680430デフォルトの名無しさん
2013/02/23(土) 14:22:50.38時期尚早な最適化はやめたほうがいい
>あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
ダメ拡張時に消える可能性がある
0431デフォルトの名無しさん
2013/02/23(土) 14:40:51.900432デフォルトの名無しさん
2013/02/23(土) 14:44:36.250433デフォルトの名無しさん
2013/02/23(土) 14:45:03.38> >あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
> ダメ拡張時に消える可能性がある
そんなわけない。というかvectorの要素への参照と勘違いしてるだろ
mapの要素への参照(ポインタ)はその要素を削除したときだけ無効になる
よってmapからその要素を削除しない限り安全にアクセスできる
0434デフォルトの名無しさん
2013/02/23(土) 14:52:41.32これは定石だな
作ってる最中は、その目的をそのクラスでシンプルに達せいしろ。最適化は後だ。みたいな格言あったよな。誰だっけ
0435デフォルトの名無しさん
2013/02/23(土) 14:53:50.45「スマホ」って範囲が広すぎて誰も答えられないんだよ
0436デフォルトの名無しさん
2013/02/23(土) 14:54:28.33ttp://ideone.com/t0IVpQ
本当だ
枝変わるときにコピーされて消えると思ってたわ
0437デフォルトの名無しさん
2013/02/23(土) 14:55:55.10>>あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
>ダメ拡張時に消える可能性がある
ありがとうございます。
拡張時も危ないのですか。
やるとすればmapを作り終わって変更しない状態になってから一覧を取り出す、か、
map内のMYをポインタ管理にしてそれを保存しておく感じになるのかな?
C++を使い始めて間もないのですが、
ちょっとしたコードでこんなにたくさんオブジェクト生成とかが呼び出されるのは
なんか気持ち悪いってのがあって。。。
まあ確かに細かい所の最適化は早いですかね。
0438デフォルトの名無しさん
2013/02/23(土) 15:03:57.08>>433
0439デフォルトの名無しさん
2013/02/23(土) 15:07:47.230440デフォルトの名無しさん
2013/02/23(土) 15:10:58.390441デフォルトの名無しさん
2013/02/23(土) 15:14:13.500442デフォルトの名無しさん
2013/02/23(土) 15:15:46.38コピーは行われないだろうけどね
0443デフォルトの名無しさん
2013/02/23(土) 15:17:12.80あら?大丈夫なのかな?
逆にvectorは連続した配列で確保されてるから、
再確保で先頭アドレスが変わるとダメになるってことでいいのかな?
0444デフォルトの名無しさん
2013/02/23(土) 15:20:22.00vectorに入れてsortしてからlower_boundで取り出しても十分速いぞ
0445デフォルトの名無しさん
2013/02/23(土) 15:20:23.320446デフォルトの名無しさん
2013/02/23(土) 15:21:45.45早い段階でc/c++言語仕様に scope(exit) 導入されてればそれほど忌避されることも無かったろうに
もう今更だけど
0447デフォルトの名無しさん
2013/02/23(土) 15:26:32.340448デフォルトの名無しさん
2013/02/23(土) 15:38:10.020449デフォルトの名無しさん
2013/02/23(土) 15:40:05.950450デフォルトの名無しさん
2013/02/23(土) 15:41:57.56ほれ https://play.google.com/store/apps/details?id=com.n0n3m4.droidc
0451デフォルトの名無しさん
2013/02/23(土) 15:50:36.93それ今やってるわボケ
今はうぇぶIFでコード組んで家のリナックス鯖のGCCでコンパイル実行だけどセキュリティ的にアレだろうが
だからスマホ向けコンピラ探してんだよハゲ
お前の薄い脳で考えるようなことは6年前からやってる
0452デフォルトの名無しさん
2013/02/23(土) 15:56:31.460453デフォルトの名無しさん
2013/02/23(土) 15:59:04.95keyが被る数が少ないなら無駄も少なくてそれでもいいですね。
今はkeyが被った瞬間に検出したいってのもあるし、
とりあえず基本的なmapを使っています。
0454デフォルトの名無しさん
2013/02/23(土) 16:49:43.60じゃあここで質問してたら意味なくね(´・ω・`)
0455デフォルトの名無しさん
2013/02/23(土) 16:58:26.98お前の脳内なんか知らねーよwww
毛生やしてから出直してこいよハゲ
0456デフォルトの名無しさん
2013/02/23(土) 17:19:13.11・製品を製造する側の人が使うプロ用のコンパイラはあるが超高い
・一般向けの安価または無料のコンパイラはない。
0457デフォルトの名無しさん
2013/02/23(土) 19:34:01.76ハーブサッターさんかな?
0458片山博文MZパンク ◆0lBZNi.Q7evd
2013/02/23(土) 22:05:03.560459デフォルトの名無しさん
2013/02/23(土) 22:08:40.620460デフォルトの名無しさん
2013/02/23(土) 22:44:51.22うおおおおおおおおおおおおおおおおおおおおおおおおおおお
ありがとううううううううううううううううう
ちょっと高いけどこれはいい1!!11!!!!!1
0461デフォルトの名無しさん
2013/02/24(日) 00:59:05.66まぁ中には外れアプリもあるだろうけどさ
0462デフォルトの名無しさん
2013/02/24(日) 01:09:06.110463デフォルトの名無しさん
2013/02/24(日) 06:47:45.110464デフォルトの名無しさん
2013/02/24(日) 08:11:08.840465デフォルトの名無しさん
2013/02/24(日) 08:29:48.56当然a.cppという同名ファイルでは変数aが使えるのですが、
b.cppなどの他のファイルでは、変数aが使えないみたいです…
publicだけでは他のファイルでは使えないのでしょうか?
0466デフォルトの名無しさん
2013/02/24(日) 08:32:46.56b.cppからa.hの変数が使えないのは、a.hをインクルードしてないから。
0467デフォルトの名無しさん
2013/02/24(日) 09:00:18.60ありがとうございます、出来るようになりました!
0468デフォルトの名無しさん
2013/02/24(日) 09:39:42.75Main、Key、Funcというclassをそれぞれ作って宣言をhとcppに書いたのですが、複数で使うために定義しようとするとエラーが出てしまいます。例えば
*a.cpp*
Main main;
Key key;
Func func;
*b.cpp*
Main main;
Key key;
Func func;
a.cppでもb.cppでもmain、func、keyのクラスを使いたいのでこう書いています。
しかし多重定義エラーだそうです…かと言ってa.cppだけで定義するとb.cppでは使えません…
調べてもこういうところが出てこないのでお願いします。
0469デフォルトの名無しさん
2013/02/24(日) 09:53:41.060470デフォルトの名無しさん
2013/02/24(日) 10:01:24.93extern Main main;
//etc...
//a.cpp
#include "a.h"
Main main;
//b.cpp
#include "a.h"
//Don't define "main" here
0471デフォルトの名無しさん
2013/02/24(日) 10:01:55.900472デフォルトの名無しさん
2013/02/24(日) 10:03:49.510473デフォルトの名無しさん
2013/02/24(日) 10:14:54.510474デフォルトの名無しさん
2013/02/24(日) 10:25:20.26ただし関数内スコープに限る?
宣言前後でmainのアドレスが変わるっぽい?
でもグローバル空間だとさすがにダメだ
using namespace std;
class Main {};
Main main;
int main() {
return 0;
}
mainname.cpp: In function ‘int main()’:
mainname.cpp:6:10: error: ‘int main()’ redeclared as different kind of symbol
mainname.cpp:4:6: error: previous declaration of ‘Main main’
0475デフォルトの名無しさん
2013/02/24(日) 10:31:28.510476デフォルトの名無しさん
2013/02/24(日) 11:27:56.610477デフォルトの名無しさん
2013/02/24(日) 12:27:45.170478デフォルトの名無しさん
2013/02/24(日) 14:18:50.11hoge使ったほうが盛り上がって面白くなるんだからもっと使えよ
0479デフォルトの名無しさん
2013/02/24(日) 16:09:25.580480デフォルトの名無しさん
2013/02/24(日) 16:23:40.800481デフォルトの名無しさん
2013/02/24(日) 17:18:05.21なぜですか?
class Hoge {
public:
virtual void func() = 0;
};
0482デフォルトの名無しさん
2013/02/24(日) 17:24:04.400483デフォルトの名無しさん
2013/02/24(日) 17:24:44.77デストラクタが仮想関数じゃないと
class Derived : Hoge { }
Hoge* p = new Derived();
delete p;
の delete p; で ~Derived() でなく ~Hoge() が呼ばれてしまう
0484デフォルトの名無しさん
2013/02/24(日) 17:25:31.20ウザい
0485デフォルトの名無しさん
2013/02/24(日) 18:35:50.35いい加減にしとけよ。
0486デフォルトの名無しさん
2013/02/24(日) 18:45:12.36怒られるんなら書けば?
class Hoge {
public:
virtual ~Hoge() {}
virtual void func() = 0;
};
0487デフォルトの名無しさん
2013/02/24(日) 18:56:58.870488デフォルトの名無しさん
2013/02/24(日) 19:38:43.32そうやってアンチhoge厨を呼び込むのはやめてもらえませんか?
0489デフォルトの名無しさん
2013/02/25(月) 00:15:49.140490デフォルトの名無しさん
2013/02/25(月) 02:42:58.79public:
virtual ~Hoge() = 0;
virtual void func() = 0;
};
0491デフォルトの名無しさん
2013/02/25(月) 02:48:27.90お前マジで頭おかしいんじゃね
0492デフォルトの名無しさん
2013/02/25(月) 07:19:45.83死ぬでっ!
0493デフォルトの名無しさん
2013/02/25(月) 12:45:21.260494デフォルトの名無しさん
2013/02/25(月) 22:46:49.68広いサトウキビ畑が
0495デフォルトの名無しさん
2013/02/25(月) 23:05:31.92鉄の暴風が来るけど大丈夫か?
0496デフォルトの名無しさん
2013/02/25(月) 23:22:54.070497デフォルトの名無しさん
2013/02/25(月) 23:24:59.140498デフォルトの名無しさん
2013/02/25(月) 23:31:31.660499デフォルトの名無しさん
2013/02/26(火) 00:25:07.56みんなどうせスマポに包むんだろ?
0500デフォルトの名無しさん
2013/02/26(火) 00:49:59.410501デフォルトの名無しさん
2013/02/26(火) 00:52:59.85デリータだけでいいやん
0502デフォルトの名無しさん
2013/02/26(火) 06:31:42.030503デフォルトの名無しさん
2013/02/26(火) 13:01:51.93ちりつも
そういう気の緩みがアホみたいにメモリを食うアプリを作る
0504デフォルトの名無しさん
2013/02/26(火) 13:27:30.97そういうのは、アホみたいにインスタンスを作りまくる奴が気にすればいいことであって、
普通の奴だと、塵は積もらんよ。
0505デフォルトの名無しさん
2013/02/26(火) 14:46:17.21お前は何を言ってるんだ?
メモリの乱れは心の乱れ。
明鏡止水のような波紋一つない平穏な心でないとそこに自分の魂を映すことはできない。
つまりメモリが乱れていると自分の魂を捉えられないということだ。
捉えられなければ魂の色も向いている方向も分からない。
そんなことでまともなソフトウェア開発ができるものか。
0506デフォルトの名無しさん
2013/02/26(火) 17:25:55.16病院行った方が良くない?
0507デフォルトの名無しさん
2013/02/26(火) 17:28:49.930508デフォルトの名無しさん
2013/02/26(火) 17:46:00.26全然たいしたことないは
0509デフォルトの名無しさん
2013/02/26(火) 18:25:20.600510デフォルトの名無しさん
2013/02/26(火) 19:05:22.710511デフォルトの名無しさん
2013/02/26(火) 19:15:24.100512デフォルトの名無しさん
2013/02/26(火) 21:34:51.210513デフォルトの名無しさん
2013/02/26(火) 21:54:18.560514デフォルトの名無しさん
2013/02/27(水) 00:24:11.00スマポのデリーター+仮想デストラクタでオーバーヘッド爆上げで
これが場合にっては大量死につながる
0515デフォルトの名無しさん
2013/02/27(水) 02:05:45.330516デフォルトの名無しさん
2013/02/28(木) 17:05:26.48codepad.org/cOb1xlVc
InnerBでは一応出来ているのですが無理矢理な感があるので
InnerCのような感じで簡単に出来たら嬉しいのですが、出来ないでしょうか?
出来なければInnerBの方法でもう少しましな書き方を教えて欲しいです。
testB2の最初に毎回xを作ってるのが気持ち悪いのでparent.a.testA()
のような感じで書けるとすっきりして嬉しいです。よろしくお願いします。
0517デフォルトの名無しさん
2013/02/28(木) 17:19:12.75ttp://codepad.org/ZL7OJMrQ
このコードでNumberクラスの演算子オーバーロードが呼ばれないのですが、
どこが問題でしょうか
期待している出力は
eq: true
です
よろしくお願い致します
0518デフォルトの名無しさん
2013/02/28(木) 17:36:22.23ttp://codepad.org/LnqU8mYx
0519デフォルトの名無しさん
2013/02/28(木) 17:38:41.89ポインタで受けたらだめだろ
リファレンスで受けないとアドレスの比較になってしまう
virtual bool operator==<Type>(const Number<Type>& number) { // 実体でないため呼ばれない
return getNumber() == number.getNumber();
}
...
bool eq = (*num1 == *num2);
0520デフォルトの名無しさん
2013/02/28(木) 17:49:18.870521デフォルトの名無しさん
2013/02/28(木) 18:07:45.480522デフォルトの名無しさん
2013/02/28(木) 18:08:09.42>>520
ありがとうございます
参照での受け渡しはうまく行ったのですが、
friend関数で定義すると、2つの引数が両方ポインタだとエラーが出ます
調べると
An operator function shall either be a non-static member function or be a non-member function and have at least one parameter whose type is a class, a reference to a class, an enumeration, or a reference to an enumeration.
とあるので、両方がポインタの==演算子オーバーロードは不可能ということなのでしょうか
0523デフォルトの名無しさん
2013/02/28(木) 18:13:58.88>//staticにするとエラー
とか
>//myclass parentは不完全な型?で宣言できない
とか、いろいろ基礎がわかってないのにInner Classとか使おうとするなよ
0524デフォルトの名無しさん
2013/02/28(木) 18:16:47.57演算子オーバーロードとか使おうとせずに、素直にequalsTo()とかその手のメソッド定義しろハゲ
0525516
2013/02/28(木) 19:54:59.70ありがとうございました!
>>523
すいません、どうしても内部クラスでないとダメだったので。
もう1度基礎から勉強します。
0526デフォルトの名無しさん
2013/02/28(木) 20:10:51.39virtual bool operator==<Type>(const Number<Type>* number) {
return getNumber() == number->getNumber();
}
bool eq = (*num1 == num2);
std::cout << "eq: " << std::boolalpha << eq << std::endl;
引数しかポインタに出来ないな
friendを宣言or定義しようとするとコンパイルエラー
0527デフォルトの名無しさん
2013/02/28(木) 22:07:32.85無理にオペレーターオーバーロードするんじゃなくて
比較関数を作ってやるべきなんですかね?
オペレーターオーバーロードでやろうとしてて、
今日どうしてもテンプレートのエラーが解決できなかった(´・ω・`)
クラスのポインタのvectorを上記を使って、
中身に沿ってポインタをソートしたかったんですが。
0528デフォルトの名無しさん
2013/02/28(木) 22:08:40.230529デフォルトの名無しさん
2013/03/01(金) 14:15:42.190530デフォルトの名無しさん
2013/03/01(金) 14:22:19.110531デフォルトの名無しさん
2013/03/01(金) 14:52:16.05http://www.bdsoft.com/tools/stlfilt.html
更新止まってるので何とかしてくれ
0532デフォルトの名無しさん
2013/03/01(金) 20:09:22.13なんか悲しい気分になったわ
0533デフォルトの名無しさん
2013/03/01(金) 20:47:39.26そして間に合わなくて入らなかったのに中止したまま・・・
0534デフォルトの名無しさん
2013/03/01(金) 22:09:48.990535デフォルトの名無しさん
2013/03/01(金) 22:32:21.91>>533と大分違う内容に激ワラ
>>533ってどう解釈して
>C++にコンセプトが入るからアップデート中止するよー
って約したのか
0536デフォルトの名無しさん
2013/03/01(金) 22:45:58.56マクロとか書くときに使うのか?
0537デフォルトの名無しさん
2013/03/01(金) 23:04:31.180538デフォルトの名無しさん
2013/03/01(金) 23:24:46.75*.hだけあればC言語って文法的に問題ないの?
0539デフォルトの名無しさん
2013/03/01(金) 23:29:09.25コンパイル通るようにしてあったら問題ないだろ
0540デフォルトの名無しさん
2013/03/01(金) 23:32:11.320541デフォルトの名無しさん
2013/03/01(金) 23:38:05.660542デフォルトの名無しさん
2013/03/02(土) 01:06:45.310543デフォルトの名無しさん
2013/03/02(土) 01:32:05.900544デフォルトの名無しさん
2013/03/02(土) 02:52:01.560545デフォルトの名無しさん
2013/03/02(土) 21:06:50.17256桁までの整数を保持して加算/減算できるクラスを作ってやったぜぇ〜
ワイルドだろぉ〜
0546デフォルトの名無しさん
2013/03/02(土) 21:08:54.260547デフォルトの名無しさん
2013/03/02(土) 21:09:53.79そりゃプリプロセッサでインクルード二重読みしないようにすれば速度は上がるだろうけど限定的なのでは?
0548デフォルトの名無しさん
2013/03/02(土) 21:45:03.82二重読みしないようにすればも何も二重読みしたらダメじゃね
>>545
Boost.Multiprecision
0549デフォルトの名無しさん
2013/03/02(土) 23:12:59.66何言ってんの
0550デフォルトの名無しさん
2013/03/03(日) 01:28:46.20C++の本で、メモリ上の動作も意識させてくれるような、教科書はありますでしょうか?
C言語の本を見ていると、メモリ上ではこのように確保されます、とか書いてあって
はじめは苦労しましたが、そのおかげで、ポインタとか、メモリの確保とか、よくわかるようになりました。
C++の教科書を見ると、こういう風に書いておくと、こういう風に動きますといった説明が多いように思います。
C++の教科書でも、メモリ上の挙動を説明している本はありますでしょうか?
(たとえば、new 演算子にクラス型をつかうと、このようにメモリが確保されて、
各メモリ領域にコンストラクタで返された値が云々。ポインタを進めると、ほら、こういう値が返ってきますね、、みたいな感じです。)
よろしくお願いします。
0551デフォルトの名無しさん
2013/03/03(日) 01:36:49.49あとクラスオブジェクトのメモリ上での展開は実装依存だし、
そんなものを気にしてもしょうがない。
0552デフォルトの名無しさん
2013/03/03(日) 01:51:32.920553デフォルトの名無しさん
2013/03/03(日) 01:52:55.51http://www.amazon.co.jp/dp/4874085202/ C++をCで解説するもの古い
http://www.amazon.co.jp/dp/4774138959/ OOなマイ言語をつくるもの
>>551
ここやhttp://toro.2ch.net/test/read.cgi/tech/1361435828/
では実装上の話もでてくる
C++を理解するのに実装の一つを知っておくのも悪くない
0554デフォルトの名無しさん
2013/03/03(日) 01:53:58.27ただせっかくC++使うんなら低級な操作は可能な限り避けたほうがいいと思う
ポインタを進めるとかまずしないし
0555デフォルトの名無しさん
2013/03/03(日) 02:11:19.49新言語やLL言語は、抽象化がポイントとなる。
マシン依存する言語は良くないという思想。
アセンブラよりもC、CよりC++、C++よりC#、Javaはマシン依存は減る。
0556デフォルトの名無しさん
2013/03/03(日) 10:11:44.09知りたいならアセンブリ吐かせてみればいいのに。
0557550
2013/03/03(日) 11:36:15.95まずは、メモリ操作ということは考えずに、クラスを記述してみるのがよさそうですね。
せっかく苦労して覚えたC言語の知識が、あまり使われないのは残念なのと、
Cでメモリ回りの操作ができて、面白かったので
しばらくそういうことをしなくなるのは残念ですが、
C++ やってみようと思います。
本の紹介もありがとうございました。
どのオブジェクト指向言語もそうなのかもしれんませんが、
(クラスの数だけ)型がどんどん増えて、メモリ云々言ってる場合ではない気がしてきました。。。
0558デフォルトの名無しさん
2013/03/03(日) 12:06:16.67まぁアレだ。
メモリ操作が面白いとかそういうプログラミングそのものの楽しさを味わうことが目的なのか、
何かアプリケーションを効率よく完成させることが目的なのか、
そこらへんの区別をつけるとその辺りのモヤモヤから解放されるよ。
ただ解放されすぎて悟りを開いて解脱までしてしまうと、
学習コストが何たらってある意味人生の効率化まで始めるようになる。
0559デフォルトの名無しさん
2013/03/03(日) 13:39:23.580560デフォルトの名無しさん
2013/03/03(日) 13:42:20.380561デフォルトの名無しさん
2013/03/03(日) 14:24:45.44C++の言語設計思想の重要な一項目として、Cとの互換性の維持があるので、全然無駄ではないよ。
混乱して学習の壁に当たる可能性は高いけど、その壁を越えた先で、Cの知識が役に立つ時が絶対に来る。
それはC++の深淵に触れ始めることを意味する。
…でも、仕事の役に立つかどうかは本人次第だし、知らなくても何とかなっちゃう事の方が多いんだけどね。
0562デフォルトの名無しさん
2013/03/03(日) 14:43:12.84char *ptr = "TEST CODE";
↑ptr変数は文字列のアドレスを格納してるんですよね
では文字列の中身はどこに置かれてるの・・?
0563デフォルトの名無しさん
2013/03/03(日) 14:48:00.480564デフォルトの名無しさん
2013/03/03(日) 14:48:25.560565デフォルトの名無しさん
2013/03/03(日) 15:01:18.98char *ptr = "TEST CODE";
printf("%c -> %08x\n",*ptr,ptr);
--------------------------------
T -> 00420f8d
char str[]="TEST CODE";
これだとわかるんですが、strの配列に直接文字列を代入してるから
中身は当然str[]内にある。
char *ptr = "TEST CODE";
これだと、文字列のアドレスただをptrに入れてる?
0566デフォルトの名無しさん
2013/03/03(日) 15:01:47.38ざっくり言えば実行ファイル自体。
0567デフォルトの名無しさん
2013/03/03(日) 15:11:07.03メモリのどっかに文字列を置いてその位置を返してるだけ
0568デフォルトの名無しさん
2013/03/03(日) 15:12:01.76有り難うございます。
理解いたしました。
0569デフォルトの名無しさん
2013/03/03(日) 15:35:10.95その表現は誤解を招くぞ。
0570デフォルトの名無しさん
2013/03/03(日) 15:41:18.68とやったらエラー出るんですが、配列に変数入れるのってどうやるんでしたっけ?
0571デフォルトの名無しさん
2013/03/03(日) 15:46:20.68違うの?
0572デフォルトの名無しさん
2013/03/03(日) 15:46:44.03ttp://ideone.com/ewqf3q
型を宣言してないせいじゃないでしょうか
0573デフォルトの名無しさん
2013/03/03(日) 15:47:00.74それはさすがに一緒じゃないだろ。
0574デフォルトの名無しさん
2013/03/03(日) 15:49:31.35int p[5] = {0,0,0,0,0};
エラーにならないけど?
0575デフォルトの名無しさん
2013/03/03(日) 15:52:11.87char str[]="ABC";
ってやっぱり違うのですか
0576デフォルトの名無しさん
2013/03/03(日) 15:53:21.95下は
str[0] = 'D';とか書き換えられる
0577デフォルトの名無しさん
2013/03/03(日) 15:54:51.21int p[5];
p[5] = {0,0,0,0,0};
で
構文エラー : '{'
構文エラー : ';' が '{' の前にありません。
構文エラー : ';' が '}' の前にありません。
と出るんですが普通なら合ってるみたいですね…
0578デフォルトの名無しさん
2013/03/03(日) 15:55:57.99それは無理です
宣言と同時にしかその構文は使えません
0579デフォルトの名無しさん
2013/03/03(日) 15:56:51.34しかも配列の範囲外だし
0580デフォルトの名無しさん
2013/03/03(日) 15:58:17.840581デフォルトの名無しさん
2013/03/03(日) 15:59:37.66ライブラリAのリンクも求められるんですが、どうすればライブラリBだけで済みますか?
ライブラリAのヘッダはライブラリBの.cppでしか読んでません
0582デフォルトの名無しさん
2013/03/03(日) 16:01:38.67> int p[5] = {0,0,0,0,0};
と
> int p[5];
> p[5] = {0,0,0,0,0};
は違うぞ。
あと p[5] の宣言に対して、p[5] に何か代入しちゃダメだろ。
0583デフォルトの名無しさん
2013/03/03(日) 16:03:44.39ということは、
char str[]="ABC"; は 用意されたchar型の入れ物、strの配列に
文字列の文字を一つ一つ格納。 中身そのものはstrの中にある。
char *str ="ABC"; は、ポインタstrに、文字列のアドレスを
いれただけ。 中身はstrの指すどっかにある
??
0584デフォルトの名無しさん
2013/03/03(日) 16:04:42.76ライブラリB.lib に ライブラリA.lib の使ってるオブジェクトファイルを含めちゃえばいいと思うが、
ライセンス的にどうよの問題がある可能性ももあるし、そもそもライブラリAのリンクが求められ
てるんだから、素直にリンクさせればいいと思うが。
0585デフォルトの名無しさん
2013/03/03(日) 16:11:19.890586デフォルトの名無しさん
2013/03/03(日) 16:13:45.55char *str ="ABC"; は char *str=&"ABC"[0];
0587デフォルトの名無しさん
2013/03/03(日) 16:14:03.11両方自作なんでライセンス的には問題ないです
ただ気持ち悪かったんで、、、
lib.exeで結合するしか無いんですかね
0588デフォルトの名無しさん
2013/03/03(日) 16:17:15.16だぬ。
0589デフォルトの名無しさん
2013/03/03(日) 16:18:49.56難しいです。
何ですこれ?
0590デフォルトの名無しさん
2013/03/03(日) 16:21:08.560591デフォルトの名無しさん
2013/03/03(日) 16:21:24.39それは実装次第だよ。
>>587
なら、
> ライブラリB.lib に ライブラリA.lib の使ってるオブジェクトファイルを含めちゃえばいい
をやればいいだけだろ。
0592デフォルトの名無しさん
2013/03/03(日) 16:23:45.45プログラム領域、静的領域、スタック領域、ヒープ領域
で
char *str ="ABC"; は、静的猟奇で
char str[]="ABCだと、スタック領域
なので、さっき
char *str ="ABC"; こうして
*str = 'K';ってやったら、コンパイラにシバかれました。
0593デフォルトの名無しさん
2013/03/03(日) 16:24:38.680594デフォルトの名無しさん
2013/03/03(日) 16:37:19.75環境と実装による。
0595デフォルトの名無しさん
2013/03/03(日) 16:39:58.12>char *str=&"ABC"[0]; は char *str=&["ABC"]0; です。
の書式の説明、ネットでさがしてるんですが見つかりません。
(持ってるC言語の本にもかいてなかた。独習Cとか)
説明してるサイトとか知りませんか?
0596デフォルトの名無しさん
2013/03/03(日) 16:43:57.85静的猟奇
…何か変態っぽいな…
0597デフォルトの名無しさん
2013/03/03(日) 16:45:37.92K&Rに、それと似たようなことは書いてあった気がする。
0598デフォルトの名無しさん
2013/03/03(日) 16:45:43.63すみません、それってlib.exeを使わずにやるにはどうすればいいんでしょう
0599デフォルトの名無しさん
2013/03/03(日) 16:48:34.55ソースコードを持ってるんだよね?
0600デフォルトの名無しさん
2013/03/03(日) 16:50:34.96はい、待ってます
0601デフォルトの名無しさん
2013/03/03(日) 16:58:31.870602デフォルトの名無しさん
2013/03/03(日) 17:00:35.09ですよね
0603デフォルトの名無しさん
2013/03/03(日) 17:09:32.49気持ち悪くねーよw
普通だよw
0604デフォルトの名無しさん
2013/03/03(日) 18:01:59.64全然ちげーよ! アホは回答するな!
0605デフォルトの名無しさん
2013/03/03(日) 18:20:37.29そしたら、足りないオブジェクトのソースコードも含めてB.lib作り直せば?って話だよね?
機能的に必要なものなんだから、何処かには入れておかなきゃダメだよね?
0606デフォルトの名無しさん
2013/03/03(日) 18:49:32.17それらは、同じことを違う表記法で表しただけだしな
0607デフォルトの名無しさん
2013/03/03(日) 18:54:50.13それは完全に違うぞ。
0608デフォルトの名無しさん
2013/03/03(日) 18:55:56.66全く違うっつってんだろw
アホは回答するなと何度言えば
0609デフォルトの名無しさん
2013/03/03(日) 18:57:00.830610デフォルトの名無しさん
2013/03/03(日) 19:04:45.40俺が書いたわけではないが、 >>586で全てだぞ。
文字列リテラルに対する扱いの説明はいらないよね?
0611デフォルトの名無しさん
2013/03/03(日) 19:16:56.29↑ 誰か説明してくらはい。
文字列 "ABC"の[0]番アドレス(戦闘番地)を*strに入れてる?
(・ω・)?
ネットでC言語の説明してるのを探してるけど、見つからない
K&Rの本を買わないといけないかしら。
(手持ちのC言語の本、4冊あるんで・・・。)
0612デフォルトの名無しさん
2013/03/03(日) 19:17:52.31char *str = ABC;
と説明した方がいいだろ
0613デフォルトの名無しさん
2013/03/03(日) 19:18:45.310614デフォルトの名無しさん
2013/03/03(日) 19:21:50.10char str[]="ABC"; は char str[]={'A','B','C'};
char *str ="ABC"; は char *str=&"ABC"[0];
これらは絶対に正しい覚えとけ
0615デフォルトの名無しさん
2013/03/03(日) 19:22:23.32いるだろw
だからアホは回答すんなと
本当はさらにconstつけた方が正解なんだが、説明が面倒になるので省いた
static const char ABC[] = "ABC";
char *str = (char *)ABC;
0616デフォルトの名無しさん
2013/03/03(日) 19:24:05.40ABCが"ABC"に見えたんだよ
怒るなハゲ
0617611
2013/03/03(日) 19:25:51.70m(_ _)m
0618デフォルトの名無しさん
2013/03/03(日) 19:25:53.61今まで
char str[]="ABC"; は char str[]={'A','B','C','\0'};
char *str ="ABC"はダメポでconst char* str ="ABC"
って信じていた
0619デフォルトの名無しさん
2013/03/03(日) 19:25:53.76null終端してないから絶対に正しくない
0620デフォルトの名無しさん
2013/03/03(日) 19:28:22.000621デフォルトの名無しさん
2013/03/03(日) 19:29:24.42画竜点睛を欠く
0622デフォルトの名無しさん
2013/03/03(日) 19:32:05.12char str[] = "ABC"; は char str[] = { 'A', 'B', 'C', '\0' }; と同じ
strの書き換えは自由
char *str = "ABC"; は
static const char[] ABC = "ABC";
char *str = (char *)ABC;
と同じ
ABCにconstがついていることから分かるように
char *で受けるのは推奨はされるものではないが、
互換性のためにconstなしでも受けられるようになっている
でもABCの書き換えは禁止
char *str = "ABC"; でなく
const char *str = "ABC"; が望ましい
0623デフォルトの名無しさん
2013/03/03(日) 19:33:18.910624デフォルトの名無しさん
2013/03/03(日) 19:33:48.42自己紹介乙
0625デフォルトの名無しさん
2013/03/03(日) 19:33:53.19char ABC[10] = "ABC"
は駄目ですよ
const char ABC[10] = "ABC"
必ずこうしなさい
0626デフォルトの名無しさん
2013/03/03(日) 19:39:35.41書き換えない場合はその方が望ましいが
書き換えたい場合はそれじゃ困る
「必ず」は言い過ぎ
あと、constなのになぜ要素数を指定する?
constでなければ後の書き換えを意図している場合に必要だが
constの場合は完全に無駄どころか、後の変更に弱いダメなコードだ
constなのに要素数を指定するのは
文字列の配列を要素固定長で確保したい場合くらいだが、
これも文字列へのポインタの配列にできるならそうした方が良い
0627デフォルトの名無しさん
2013/03/03(日) 19:40:46.70バカでてくんなつってんだろw
0628デフォルトの名無しさん
2013/03/03(日) 19:51:29.04勘違いすんなよ
0629デフォルトの名無しさん
2013/03/03(日) 19:56:23.89const char str[]= "ABC";
ポインタと配列の違いだけ
*strはrvalueの"ABC"オブジェクトが消えてなくならないように、ポインタでlvalue的扱いできるようにした
str[]はrvalueの"ABC"オブジェクトが消えてなくならないように、配列でlvalue的扱いできるようにした
覚えとけよ
"ABC"を代入演算子=で左のlvalueに結びつけたってだけ
でも、C++には=でコンストラクタ呼ぶのあるがな
0630デフォルトの名無しさん
2013/03/03(日) 20:01:06.56だーかーらー、アホは回答すんなって何度言えばいいんだよ!
上はstrに"ABC"のアドレスを入れているが、
下はstrと"ABC"が別個にあるわけじゃなく、str自体が"ABC"になっている
下では"ABC"オブジェクトなんて存在しない
単なる const char str[] = { 'A', 'B', 'C', '\0' }; のシンタックスシュガーだ
=は代入演算子じゃねえし、もう無茶苦茶だ
0631デフォルトの名無しさん
2013/03/03(日) 20:02:02.090632デフォルトの名無しさん
2013/03/03(日) 20:03:54.79アホが回答しようが真に受けちゃうだろ
勘弁してくれ
0633デフォルトの名無しさん
2013/03/03(日) 20:04:51.330634デフォルトの名無しさん
2013/03/03(日) 20:07:04.980635デフォルトの名無しさん
2013/03/03(日) 20:07:43.70ここは初心者解答者スレじゃないんだぞ
Cについては知っていても、初心者解答者は答えるなよ
初心者解答者じゃないなら、普通2つの"ABC"とは何か説明するぞ
質問内容から質問者のレベルが解らないような初心者解答者は駄目だな
0636デフォルトの名無しさん
2013/03/03(日) 20:09:10.69安価間違えてないか?
さもなくば日本語でおk
0637デフォルトの名無しさん
2013/03/03(日) 20:10:56.23それは言っちゃダメ、絶対。
荒れちゃう。
0638デフォルトの名無しさん
2013/03/03(日) 20:12:26.03何で見当違いの糞回答を後から後から出してくるのか
そんなに恥かきたいのか
0639デフォルトの名無しさん
2013/03/03(日) 20:12:29.750640デフォルトの名無しさん
2013/03/03(日) 20:13:39.30そろそろ許してやろうぜw
0641デフォルトの名無しさん
2013/03/03(日) 20:15:27.59合っているが>>635だけじゃなく他の解答者へでもある
"ABC"が色々出ているのに、初心者が"ABC"を理解していると思っているって
さすが初心者解答者と思った
生徒としては優秀なのかもしれんが、先生としては駄目だな
最初の質問者は2つの"ABC"の違いすらわかってないだろな
0642デフォルトの名無しさん
2013/03/03(日) 20:16:35.200643デフォルトの名無しさん
2013/03/03(日) 20:18:07.18*str じゃなくて str ね。
そこ以外の解釈はあってるよん。
文字列リテラルはそのまま配列オブジェクトとして使えるの。
0644デフォルトの名無しさん
2013/03/03(日) 20:21:05.69質問者に向けたレスじゃないし
0645デフォルトの名無しさん
2013/03/03(日) 20:23:28.240646デフォルトの名無しさん
2013/03/03(日) 20:26:00.51恥ずかしい回答したことを誤摩化すために
難癖付けてるだけにしか見えない
0647デフォルトの名無しさん
2013/03/03(日) 20:30:09.950648デフォルトの名無しさん
2013/03/03(日) 20:37:31.08祭りは楽しまないとだめだよな
0649デフォルトの名無しさん
2013/03/03(日) 20:40:43.66あいつらリテラルのメンバ呼び出すからな
0650デフォルトの名無しさん
2013/03/03(日) 20:41:54.93楽しんだもの勝ち。
0651デフォルトの名無しさん
2013/03/03(日) 20:47:08.59test2は書き換えちゃいけない領域を書き換えてるので、
コンパイルオプションによっては異常終了したり、
妙な動きをするけど気にするな。
#include <stdio.h>
void test1(int pos, char c) {
char str[] = "abcdefg";
if (pos) str[pos-1] = c;
puts(str);
}
void test2(int pos, char c) {
char *str = "abcdefg";
if (pos) str[pos-1] = c;
puts(str);
}
int main() {
test1(0, '.'); test1(3, 'X'); test1(0, '.');
test2(0, '.'); test2(3, 'D'); test2(0, '.');
}
0652デフォルトの名無しさん
2013/03/03(日) 20:48:11.44&"ABC"[0]はconst char *になるからコンパイルエラー出るけど
その点以外に問題があるコードではないと思う
が、初心者への説明として分かりやすい説明か?と言われるとどうだろう
0653デフォルトの名無しさん
2013/03/03(日) 21:09:19.65C言語では文字列リテラルの型はstatic char[]
constが付く規定は無い
付くと思ってるやつはC++と混同している
書き換えは未定義ってだけ
0654デフォルトの名無しさん
2013/03/03(日) 21:18:07.21char *ptr なんだよハゲ。
0655デフォルトの名無しさん
2013/03/03(日) 21:25:04.290656デフォルトの名無しさん
2013/03/03(日) 21:47:49.36名称の付け方だけでもレベル分るからな
0657デフォルトの名無しさん
2013/03/03(日) 21:56:41.38本当だ
Cはconstつかないんだな
0658デフォルトの名無しさん
2013/03/03(日) 21:59:10.63CかC++かの注釈は必要だな
0659デフォルトの名無しさん
2013/03/03(日) 22:12:16.78int max=10000;
for(cnt=0;cnt<max;cnt++){
if(cnt==100){
cnt=max;
}
}
これでループ抜けるのってヤバイんでしょうか?
VC++ですがこれをやると強制終了したり、何回もビルドしてると強制終了しなくなったりでかなり不安です。
0660デフォルトの名無しさん
2013/03/03(日) 22:18:02.86if(cnt==100){cnt=max;}より後ろにcntを使うコードがあって、
そこがおかしくなってんじゃね
0661デフォルトの名無しさん
2013/03/03(日) 22:25:30.24問題はあんたが書いてないところにある
0662デフォルトの名無しさん
2013/03/03(日) 22:27:55.43>>661
それがわかっただけでも一応安心しました感謝です。
0663デフォルトの名無しさん
2013/03/03(日) 22:39:21.52たまにみかけるんですが、由来はなんでしょうか
0664デフォルトの名無しさん
2013/03/03(日) 22:40:04.920665デフォルトの名無しさん
2013/03/03(日) 22:40:52.430666デフォルトの名無しさん
2013/03/03(日) 22:40:57.82hogehogeの由来は謎
0667デフォルトの名無しさん
2013/03/03(日) 22:41:49.35素晴らしいコードだね
見習いましょう
0668デフォルトの名無しさん
2013/03/03(日) 22:42:22.990669デフォルトの名無しさん
2013/03/03(日) 22:42:31.01gccでエラーになったけど
0670デフォルトの名無しさん
2013/03/03(日) 22:43:31.38マジかよ糞箱売ってくる
0671デフォルトの名無しさん
2013/03/03(日) 22:45:45.41末尾の \0 は無視するのか?
0672デフォルトの名無しさん
2013/03/03(日) 22:47:46.770673デフォルトの名無しさん
2013/03/03(日) 22:54:36.35http://ja.wikipedia.org/wiki/Hoge
0674デフォルトの名無しさん
2013/03/03(日) 23:09:11.21>static const char[] ABC = "ABC";
コンパイルとおりませんけど?
http://ideone.com/KyWtr8
>const char *str = "ABC"; が望ましい
このconst の置き方は馬鹿がするやりかた。
char const *str = "ABC";
と書け
java/C# から入った馬鹿はこれだから困る、これでも読んで勉強しろ
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
0675デフォルトの名無しさん
2013/03/03(日) 23:10:27.140676デフォルトの名無しさん
2013/03/03(日) 23:10:41.36すまんね
constの位置はただの趣味
0677デフォルトの名無しさん
2013/03/03(日) 23:19:21.32俺は char * const だわ。
0678デフォルトの名無しさん
2013/03/03(日) 23:21:54.170679デフォルトの名無しさん
2013/03/03(日) 23:25:53.53char const * と char * const
は意味が違う。
const char * と char const *
は一緒だがねC#馬鹿は出てくるな
0680デフォルトの名無しさん
2013/03/03(日) 23:27:27.440681デフォルトの名無しさん
2013/03/03(日) 23:31:23.19char * constはアドレス値の変更が不可ってこと?
0682デフォルトの名無しさん
2013/03/03(日) 23:31:58.630683デフォルトの名無しさん
2013/03/03(日) 23:34:19.12ほんと>>677はワロチだよな
char const * と char * const
何がconstなのか解りません><
0684デフォルトの名無しさん
2013/03/03(日) 23:37:42.000685デフォルトの名無しさん
2013/03/03(日) 23:44:52.240686デフォルトの名無しさん
2013/03/03(日) 23:46:24.400687デフォルトの名無しさん
2013/03/03(日) 23:53:20.70言語仕様にsegmentを持ったポインタ型の用意が有ってもいいと思う
0688デフォルトの名無しさん
2013/03/04(月) 00:01:33.340689デフォルトの名無しさん
2013/03/04(月) 00:47:59.03char ch = 'a';
char *ptr1;
char **ptr2;
ptr1 = &ch;
ptr2 = &ptr1;
printf("ptr1_address -> %08x\n",ptr1);
printf("ptr2_address -> %08x\n",ptr2);
わかりにくいですが、実用・実務ではどういった時に使うのでしょうか?
基本情報の午後の問題でもポインタのポインタが使われてましたね
0690デフォルトの名無しさん
2013/03/04(月) 00:49:53.49まあ俺はstring使うから使ったこと無いけど
0691デフォルトの名無しさん
2013/03/04(月) 00:53:34.88void foo(const char *const *table, int size);
static const char *const table[] = {
"abc", "def", "ghijk", "lmnopq", "rstuvwxyz"
};
foo(table, 5);
みたいな使い方もなくはないかもしれない
0692デフォルトの名無しさん
2013/03/04(月) 00:54:32.700693デフォルトの名無しさん
2013/03/04(月) 00:57:01.550694デフォルトの名無しさん
2013/03/04(月) 00:57:56.13有り難うございます!
0695デフォルトの名無しさん
2013/03/04(月) 00:58:48.20char **ptr2;
ptr2 = str;
printf("%s \n",*ptr2)
----------------------------------------
>I
こうですね
0696デフォルトの名無しさん
2013/03/04(月) 01:02:38.400697デフォルトの名無しさん
2013/03/04(月) 01:03:50.83char* table[]
だとやっぱり、第三者に書き換えられる恐れあり?
0698デフォルトの名無しさん
2013/03/04(月) 01:04:39.61なんとなくね
0699デフォルトの名無しさん
2013/03/04(月) 01:06:06.75(まほうのことばで〜♪たのしいなかまが〜♪)
0700デフォルトの名無しさん
2013/03/04(月) 01:06:55.00なるほど
0701デフォルトの名無しさん
2013/03/04(月) 01:08:28.31つけないとなんとなくセキュリティ的に危ない気がする
0702デフォルトの名無しさん
2013/03/04(月) 01:35:37.53char*や構造体へのポインタ配列をソートする時、実体をコピーしていると
多大なコストが掛かるので、ポインタをソートする
0703デフォルトの名無しさん
2013/03/04(月) 11:00:25.02何が問題なのでしょうか。
int value;
sscanf("8F5AFC8", "%X", value);
0704デフォルトの名無しさん
2013/03/04(月) 11:32:10.320705デフォルトの名無しさん
2013/03/04(月) 12:31:52.710706デフォルトの名無しさん
2013/03/04(月) 12:34:10.340707デフォルトの名無しさん
2013/03/04(月) 20:09:14.120708デフォルトの名無しさん
2013/03/04(月) 20:52:12.08不思議と「関数を使っている」という実感が沸かないんだよな。決まり文句・構文のように感じてしまう
引数とはなんぞ、返り値とはなんぞと理解してから関数として認識すると
自ずとprintfは値で、scanfは参照が必要だということが理解できるんだが
0709デフォルトの名無しさん
2013/03/04(月) 20:57:55.570710デフォルトの名無しさん
2013/03/04(月) 22:22:37.36それはあなたが精神を解き放ってコスモと融合させてないだけだ。
迷路のような現世の構造の中をさ迷っていてはいつまでたっても答えは見つからない。
精神を解き放つにはまず全てのリンクを無へと還すことから始まる。
そのリンクは全て人間に内在するものだから、解脱することによってそれを断ち切れる。
人間に内在するということは、人間が死ねばそのリンクも同時に消えることになる。
例えば誰かが死んだら、その人の持ち物のいくつかは生きている人間によって価値を見いだされるが、いくつかは誰にも価値を見いだされない。
この価値を見いだされない状態こそがリンクを無へと還した状態であり、これが本来の物の価値となる。
ただ、その状態を作り出すために死んでいてはその状態を手にできないため、
修行を行うことによって解脱し、生きながらにして万物のリンクを無へと還す。
さて、無へと還しただけではその物があなたにとって意味を持たないためどうすることもできず、
もちろん再定義することもできない。
そこで精神を解放してコスモと融合させ、コスモの意志によってその物に定義を与える。
コスモの意志はあなたが想像しているよりはるかにニュートラルであり、物の本質を問う。
それによって正しい道へと導かれるわけだ。
printfはあなたにとって何だろうか?
文字を表示するもの、何かよく使うもの、一番最初に習ったもの、打ち慣れたもの、デバッグにも使えるもの、色々あるだろう。
まずは解脱してそういったあなたとprintfをつなぐリンクを無へと還すのだ。
そして精神を解放し、コスモと融合することによってprintfの本質を問うのだ。
そうすればコスモの意志によって関数であるという答えが導かれる。
あなたにコスモの導きがあらんことを。
0711デフォルトの名無しさん
2013/03/04(月) 22:27:27.57わたしは、大学のプログラム講習で余興みたいなので可変引数の
関数を作ったりデバッガでスタックを見たりいじったりして理解を深めて、
printf();もれっきとした関数なんだなと思えるようになりました。
0712デフォルトの名無しさん
2013/03/04(月) 22:29:00.370713デフォルトの名無しさん
2013/03/04(月) 22:30:18.770714デフォルトの名無しさん
2013/03/04(月) 22:35:31.72そうすればプログラムと精神世界が同じレイヤで同期をとることになるからprintfが関数だってのも一意に定まるでしょ
0715デフォルトの名無しさん
2013/03/04(月) 23:11:17.05これでおk?
0716デフォルトの名無しさん
2013/03/05(火) 00:25:04.78スコープ解決演算子などを用い、無名名前空間の変数を明示的に指定する方法はあるでしょうか。
例えば、以下のようなコードで Namespace を表示させるにはどうしたら良いでしょうか。
#include <iostream>
char *str = "Global"; //グローバル
namespace{
char *str = "Namespace"; //無名名前空間
}
int main( )
{
char *str = "Local"; //ローカル
//ここで無名名前空間のstrを表示させたい
std::cout << ●● << std::endl;
return 0;
}
0717デフォルトの名無しさん
2013/03/05(火) 00:30:28.510718デフォルトの名無しさん
2013/03/05(火) 00:36:08.710719デフォルトの名無しさん
2013/03/05(火) 00:44:25.530720デフォルトの名無しさん
2013/03/05(火) 07:09:17.89そんなんだからこんなアホな質問するんだよ
0721デフォルトの名無しさん
2013/03/05(火) 08:09:37.040722デフォルトの名無しさん
2013/03/05(火) 15:10:25.07キューに積まれる内容は、独自のフォーマットで以下のような構造をしています。
long 4byte・・・メッセージの種類を表す整数
long 4byte・・・メッセージの内容そのもののバイト数
char 可変byte・・・メッセージの内容、char型で宣言しているが1byte単位で扱えるようにするためであって文字とは限らない
これが区切り文字なしで連続してメモリ領域に追加されていきます
[メッセージ1の種類][メッセージ1のbyte数][メッセージ1の内容][メッセージ2の種類][メッセージ2のbyte数][メッセージ2の内容][メッセージ3の種類][メッセージ3のbyte数][メッセージ3の内容]・・・
キューへのメッセージ追加と読み出しは非同期であり、読み出しが来ないままどんどん積まれていく場合もあれば
読み出すべきメッセージがないにも関わらず読み出しに行く場合もあります。
読み出す位置、追加する位置はそれぞれアドレスで、管理してあり、
読み出し/追加が行われた際に、それぞれ次に読み出し/追加を行う位置までアドレスを進めます。
0723デフォルトの名無しさん
2013/03/05(火) 15:22:48.780724デフォルトの名無しさん
2013/03/05(火) 15:31:22.36で、質問は?
0725デフォルトの名無しさん
2013/03/05(火) 16:44:45.930726デフォルトの名無しさん
2013/03/05(火) 16:48:04.520727デフォルトの名無しさん
2013/03/05(火) 16:57:46.76「キュー」は"queue"と綴って発音は"キュー"。
従って、"ue"は無音であると考えられる。
実際、"q"も"キュー"と発音する。
以上から、"queueueueueueueue"のように綴っても
発音は"キュー"であると推測される。
0728デフォルトの名無しさん
2013/03/05(火) 17:47:47.460729デフォルトの名無しさん
2013/03/05(火) 17:55:03.52だからdequeもでくーって呼んでる
0730デフォルトの名無しさん
2013/03/05(火) 19:38:05.550731デフォルトの名無しさん
2013/03/05(火) 19:48:31.170732デフォルトの名無しさん
2013/03/05(火) 19:48:59.280733デフォルトの名無しさん
2013/03/05(火) 19:52:59.46http://toro.2ch.net/test/read.cgi/tech/1360231775/953
0734デフォルトの名無しさん
2013/03/05(火) 19:56:56.01本家dequeueがキューから要素を取り出す操作なので
かぶらないようにdequeにしたらしい。
charはキャラかチャーかとか、最後のeのないcreatは
どう発音するかとか昔からこの手の論争ははてしなくある。
0735デフォルトの名無しさん
2013/03/05(火) 20:03:11.840736デフォルトの名無しさん
2013/03/05(火) 20:13:30.550737デフォルトの名無しさん
2013/03/05(火) 20:23:20.83何でwe?
0738デフォルトの名無しさん
2013/03/05(火) 20:24:26.230739デフォルトの名無しさん
2013/03/05(火) 20:29:38.72先ずは発音からですよ
0740デフォルトの名無しさん
2013/03/05(火) 21:20:16.72100 Byte 用意したつもりが、結果は4Byte・・
なぜでしょうか・・
0741デフォルトの名無しさん
2013/03/05(火) 21:26:22.97mallocは確保したアドレスを返す
喪前の使ってるコンピュータのアドレス幅が4倍と(43bit)
sizeof(void *)と一緒
0742デフォルトの名無しさん
2013/03/05(火) 21:27:06.99sizeofはコンパイル時定数だから
それはsizeof(char*)が返ってる
実行時に動的に確保したやつはsizeofじゃ分からないよ
0743片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/05(火) 21:28:21.52_msizeで検索
0744740
2013/03/05(火) 21:33:57.04と、なりますとmallocで確保した容量を確認したい時は
ムリなんでしょうか?
0745デフォルトの名無しさん
2013/03/05(火) 21:34:02.07sizeofはコンパイル時定数とはかぎらない。
嘘おしえないように。
0746デフォルトの名無しさん
2013/03/05(火) 21:35:30.000747740
2013/03/05(火) 21:43:06.92>>746
有り難うございます
printf("%d\n",_msize((char*)malloc(100)));
でちゃんと、100(Byte)が表示されました。
0748デフォルトの名無しさん
2013/03/05(火) 21:49:33.13マジで?
どういった場合コンパイル定数じゃなくなるの?
0749デフォルトの名無しさん
2013/03/05(火) 22:05:03.95char b[sizeof(a)];
0750デフォルトの名無しさん
2013/03/05(火) 22:07:41.76を少し改変したところ、コールバックで呼び出された関数内でのメンバ変数の値がおかしくなってしまいました。
http://codepad.org/TgCWvcDx
原因と対処方法をお願いします。
0751デフォルトの名無しさん
2013/03/05(火) 22:07:46.89http://ideone.com/SdH3DK
0752デフォルトの名無しさん
2013/03/05(火) 22:10:01.52可変長配列ね
サンクス
0753デフォルトの名無しさん
2013/03/05(火) 22:14:28.260754デフォルトの名無しさん
2013/03/05(火) 22:16:06.14CTestはCCallBack型じゃないんだからそんなキャストして使っちゃダメ
std::functionなり使ってください
0755デフォルトの名無しさん
2013/03/05(火) 23:09:19.82printf ("関数funcのアドレスは %x \n", &func);
どっちも同じですよね?
0756片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/05(火) 23:12:25.3664ビット環境のことを考えたら%pの方がいい
0757デフォルトの名無しさん
2013/03/05(火) 23:13:27.92どちらも未定義
0758デフォルトの名無しさん
2013/03/05(火) 23:15:43.40結果は
関数funcのアドレスは0040100A
関数funcのアドレスは40100a
になりました。 %pの方がいいんですね
0759デフォルトの名無しさん
2013/03/05(火) 23:47:35.24基本的に片山は嘘をつくから相手にしないほうがいい
それに片山の相手をしていると他の回答者に無視されるよ
0760デフォルトの名無しさん
2013/03/06(水) 00:07:59.08とりあえず片山をNGに入れるべき。
0762デフォルトの名無しさん
2013/03/06(水) 00:23:10.55Toppers とかカーネル使ったC言語のプログラムの
質問できるスレはどこにあるんでしょうか・・。
それか此方でも質問はOK?
0763デフォルトの名無しさん
2013/03/06(水) 00:32:09.000764デフォルトの名無しさん
2013/03/06(水) 00:33:16.34ありがとうございます。 助かります
0765デフォルトの名無しさん
2013/03/06(水) 12:42:49.350766デフォルトの名無しさん
2013/03/06(水) 14:48:38.73知りました
でも用途がわからん。
0767デフォルトの名無しさん
2013/03/06(水) 14:54:30.210768デフォルトの名無しさん
2013/03/06(水) 14:57:04.720769デフォルトの名無しさん
2013/03/06(水) 14:59:42.69クイックソートで使うんですか
アルゴリズムの勉強しようっと
0770デフォルトの名無しさん
2013/03/06(水) 14:59:51.630771デフォルトの名無しさん
2013/03/06(水) 15:28:52.47クイックソート(アルゴリズム)に使うのではなく、qsort(Cの標準関数)に使うの。
0772デフォルトの名無しさん
2013/03/06(水) 15:47:19.78了解しました。
0773デフォルトの名無しさん
2013/03/06(水) 16:17:34.99自分がそうだったってだけかもしれんけど。
0774デフォルトの名無しさん
2013/03/06(水) 16:50:11.68関数ポインタは配列にして動的に使う関数を決めるときによく使うが
0775デフォルトの名無しさん
2013/03/06(水) 17:06:22.890776デフォルトの名無しさん
2013/03/06(水) 17:36:53.93確かにC++ではstd::sortを使った場合qsort()より優れたコードが生成される可能性
があり(保証はない)、優先的に使うべきだが、Cの場合仕方がない
0777デフォルトの名無しさん
2013/03/06(水) 18:15:24.35(※)個人差があります
0778デフォルトの名無しさん
2013/03/06(水) 18:41:18.32関数オブジェクトより関数ポインタのほうがすっきり記述できるかもしれない
0779デフォルトの名無しさん
2013/03/06(水) 18:43:57.560781デフォルトの名無しさん
2013/03/06(水) 19:09:52.91最適化できる出来ないは地味に効いてくるよ
0782デフォルトの名無しさん
2013/03/06(水) 22:46:25.61非常にカッコ悪いけど。
0783デフォルトの名無しさん
2013/03/06(水) 23:02:28.62qsortはプリミティブ型の場合、
比較処理のインライン展開より
要素の交換が汎用処理(memcpy)を使って行われるのが
一番の遅くなる要因だと思う
std::sortなら代入演算子がそのまま使われるので、
プリミティブ型なら高速にコピーできる
ただ、プリミティブ型以外の場合、
代入演算子が複雑だと逆に遅くなる場合もあると思う
C++11ならムーブのおかげで大分ましだろうけど
0784デフォルトの名無しさん
2013/03/06(水) 23:32:37.620785デフォルトの名無しさん
2013/03/06(水) 23:38:19.84これをsortした後にuniqueしたい場合、要素をdeleteするタイミングが分かりません
以下のコードだとメモリリークが発生しますが、それを防ぐためにdeleteするコードはどのように書けばよいでしょうか?
sort(arr.begin(), arr.end(), MyClassSmaller());
vector<MyClass*>::iterator it = unique(arr.begin(), arr.end(), MyClassEquals());
arr.erase(it, arr.end());
0786デフォルトの名無しさん
2013/03/06(水) 23:39:18.210787デフォルトの名無しさん
2013/03/06(水) 23:40:28.950788デフォルトの名無しさん
2013/03/07(木) 01:22:35.54std::sort(std::begin(arr), std::end(arr), [](std::unique_ptr<MyClass>& p1, std::unique_ptr<MyClass>& p2) { return *p1 < *p2; });
ここがコンパイルが通りません
auto it = std::unique(std::begin(arr), std::end(arr), [](std::unique_ptr<MyClass>& p1, std::unique_ptr<MyClass>& p2) { return *p1 == *p2; });
これは行けるのですが
ちなみにクラスは
class MyClass {
int* ip;
int siz;
public:
MyClass(int i) : ip(new int[i]), siz(i) {}
~MyClass() { delete[] ip; siz = 0; }
bool operator<(const MyClass& m) {
return siz < m.siz;
}
bool operator==(const MyClass& m) {
return siz == m.siz;
}
void print() const {
std::cout << siz << std::endl;
}
};
です
0789デフォルトの名無しさん
2013/03/07(木) 01:27:20.43エラーメッセージ読め。
読んで分からないから相談ってことならエラーメッセージ貼れ。
比較関数の引数に const が抜けてるような気がするよ。
0790デフォルトの名無しさん
2013/03/07(木) 01:46:19.53ありがとうございます
エラーメッセージが滝のように出てくるので
std::sort(std::begin(arr), std::end(arr), [](const std::unique_ptr<MyClass>& p1, const std::unique_ptr<MyClass>& p2) { return *p1 < *p2; });
これで行けました
0791デフォルトの名無しさん
2013/03/07(木) 01:55:08.410792デフォルトの名無しさん
2013/03/07(木) 01:58:37.74もう解決しましたけど
gccのエラーメッセージは読んでも理解出来ない・・・
0793デフォルトの名無しさん
2013/03/07(木) 02:02:17.580794デフォルトの名無しさん
2013/03/07(木) 02:04:35.110795デフォルトの名無しさん
2013/03/07(木) 02:07:32.63あのさあ・・・お前頭おかしくない?精神科逝けよ
0796デフォルトの名無しさん
2013/03/07(木) 02:09:12.610797デフォルトの名無しさん
2013/03/07(木) 02:10:07.47我々回答者に理解できるはずもなかろう?
0798デフォルトの名無しさん
2013/03/07(木) 02:31:47.64あと夜中は神経が過敏になってるから投稿前に一回深呼吸でもして落ち着いてみろ
0799デフォルトの名無しさん
2013/03/07(木) 03:12:15.99エラーメッセージが長すぎると思うのなら、 codepad や ideone で
エラーの出るコードをコンパイルさせて URL を貼っておけばよい。
>>792
エラーメッセージが理解できないということのほうが根本的な問題であって
そこさえ解決できれば今後多くの問題を自分で解決できるようになるのだから、
読んでも理解できないというメッセージを示して相談したほうがいいだろう。
0800デフォルトの名無しさん
2013/03/07(木) 03:26:40.95キューのメモリブロックのイメージ
△・・・読み出し開始位置
▲・・・追加開始位置
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
△ ▲
但し、キューが確保したメモリ領域の末端に達した場合、先頭から再利用します。
その際には追加開始位置のアドレスが読み出し開始位置のアドレスよりも大きくなります。
このとき、このキューのサイズは何バイトに設定しておくべきか?
また、読み出し速度が追加速度よりも極端に速い場合に、再利用によってまだ読み出していない
メッセージを上書きしようとする可能性があるが、その際にメッセージは破棄してもよいか?
といった疑問が生じました。
しかし、それはアプリケーションの仕様から決定されるものであり、ここで質問して回答の得られる性質ものではないため
このことに関してはここでは質問しません。
その他に以下の条件があります。
I. 読み込み開始位置のアドレスと追加開始位置のアドレスの差(▲-△)が8未満の場合は読み込みを行わない
II. ▲-△が、「メッセージ内容のバイト数+8byte」未満の場合も読み込みを行わない
0801デフォルトの名無しさん
2013/03/07(木) 04:48:52.76イラッ
0802デフォルトの名無しさん
2013/03/07(木) 05:22:09.81なんでだよ。
つーか、質問じゃないし何がしたいんだ。
0803デフォルトの名無しさん
2013/03/07(木) 07:21:53.42残りサイズが0なら読み出すなよ
0804デフォルトの名無しさん
2013/03/07(木) 10:32:12.69Windows+CPP+DirectXみたいな鉄板の組み合わせはMacではどういったものになりますか?
0805デフォルトの名無しさん
2013/03/07(木) 11:16:54.110806デフォルトの名無しさん
2013/03/07(木) 11:17:44.230807デフォルトの名無しさん
2013/03/07(木) 11:36:38.150808デフォルトの名無しさん
2013/03/07(木) 12:58:21.62QtOpenGLならWindows/Linux/MacOSどれでも同じソースでいけるぞ。
0809デフォルトの名無しさん
2013/03/07(木) 13:48:27.730810デフォルトの名無しさん
2013/03/07(木) 13:53:32.630811デフォルトの名無しさん
2013/03/07(木) 13:56:36.900812デフォルトの名無しさん
2013/03/07(木) 14:07:05.960813デフォルトの名無しさん
2013/03/07(木) 15:56:05.45まず問題となっている箇所でどのような処理を行っているのか説明しています。
質問はしばらくお待ちください。
0814デフォルトの名無しさん
2013/03/07(木) 16:19:34.05今まで使った事ないですが、とある案件のソース
を見たら、あっちこっちに見かけた件。
0815デフォルトの名無しさん
2013/03/07(木) 16:26:44.930816デフォルトの名無しさん
2013/03/07(木) 16:28:44.110817デフォルトの名無しさん
2013/03/07(木) 16:52:17.16にある
void f()
{
static char *theTxt;
strcpy(theTxt,"TEST\n");
printf("%s",theTxt);
}
これのNULL領域の破壊とはどういうことなのでしょうか
0818デフォルトの名無しさん
2013/03/07(木) 17:17:06.17その、theTXTが指す領域はどこだい?
0819デフォルトの名無しさん
2013/03/07(木) 17:29:19.650820デフォルトの名無しさん
2013/03/07(木) 18:13:07.88それともメモリ上の何処かにあるポインタに、文字列そのものを突っ込むのかっていう。
0821デフォルトの名無しさん
2013/03/07(木) 18:15:41.110822デフォルトの名無しさん
2013/03/07(木) 18:24:53.550823デフォルトの名無しさん
2013/03/07(木) 18:30:49.06static宣言されたポインタは0を初期値に持つから
それが指す領域はNULL領域。
0824デフォルトの名無しさん
2013/03/07(木) 18:33:18.530825デフォルトの名無しさん
2013/03/07(木) 18:38:40.600826デフォルトの名無しさん
2013/03/07(木) 18:46:50.54(T*)((void*)0)、こんな感じ
0827デフォルトの名無しさん
2013/03/07(木) 18:49:46.440828デフォルトの名無しさん
2013/03/07(木) 18:52:33.77そんなことしなくても
char* c = 0;
この0はヌルポインタとして扱われる
0829デフォルトの名無しさん
2013/03/07(木) 19:18:00.79(T*)0 で十分ぬるぽ
0830デフォルトの名無しさん
2013/03/07(木) 19:18:47.69ヌルポインタはどこも「指さない」したがってNULL領域なぞ存在しない
0831デフォルトの名無しさん
2013/03/07(木) 19:26:13.630832デフォルトの名無しさん
2013/03/07(木) 19:27:20.790833デフォルトの名無しさん
2013/03/07(木) 19:30:16.940834デフォルトの名無しさん
2013/03/07(木) 20:38:44.08#define NULL (void*)0
const T NULL = 0; Tはsizeof(ポインタ)が格納できる型
型、長さ調べたければ typeid(NULL).名前() sizeof(NULL)
ぬルポとは、しいて言うなら自動で型変換できるてテンプレートのNULLで
nullptrとかく
信じてくださいね
0835デフォルトの名無しさん
2013/03/07(木) 21:02:50.960836デフォルトの名無しさん
2013/03/07(木) 22:15:15.32実際にはどこも指していなくても
コンピューターの世界では便宜的にどこかを指しているとした方が
統一的に扱えて便利なことがあるんだよ。
listのendとかね。
NULL領域もそういった類の用語。
キミがどう思おうが一般的に使われてるから。
0837デフォルトの名無しさん
2013/03/07(木) 23:31:00.64ガッ
0838デフォルトの名無しさん
2013/03/07(木) 23:32:43.27"NULL領域" 約 504 件
"ヌル領域" 約 506 件
一般的・・・?
0839デフォルトの名無しさん
2013/03/07(木) 23:34:12.18nowhere みたいなものだと思えば別に呼んでもいいとは思うが
聞いたことは無いな
0840デフォルトの名無しさん
2013/03/07(木) 23:34:32.91脳内ソースなんだから突っ込んじゃダメだよ
0841デフォルトの名無しさん
2013/03/07(木) 23:34:46.260842デフォルトの名無しさん
2013/03/07(木) 23:56:23.81hell:
printf("お前も蝋人形にしてやろうか!");
0843デフォルトの名無しさん
2013/03/08(金) 03:48:06.54実装としては「便宜的に何処かを指す必要がある」というのは、逆にいえば概念を表現できないから
だね
0844デフォルトの名無しさん
2013/03/08(金) 06:35:19.93つまりみな地獄行きなのですね。
0845デフォルトの名無しさん
2013/03/08(金) 07:54:10.84ナルですよ!
ヴァジャイナとかバイラスみたいなもんだよ
0846デフォルトの名無しさん
2013/03/08(金) 11:32:02.19Windows環境で動くアプリケーションで
制御系やデータ管理アプリを作るなら
0847デフォルトの名無しさん
2013/03/08(金) 11:49:34.710848デフォルトの名無しさん
2013/03/08(金) 12:03:23.690849デフォルトの名無しさん
2013/03/08(金) 12:06:30.74時代はLinuxですか?
まさかMac
0850デフォルトの名無しさん
2013/03/08(金) 12:07:03.440851デフォルトの名無しさん
2013/03/08(金) 12:10:50.950852デフォルトの名無しさん
2013/03/08(金) 12:15:05.85細かいことには文句言わないよ
0853デフォルトの名無しさん
2013/03/08(金) 12:20:27.45消滅はしないだろうけど市場規模は限りなく小さくなるから投資するのは馬鹿
0854デフォルトの名無しさん
2013/03/08(金) 12:25:11.020855デフォルトの名無しさん
2013/03/08(金) 12:32:55.530856デフォルトの名無しさん
2013/03/08(金) 12:39:40.83今着目しているのはC#、でもhttp://toro.2ch.net/test/read.cgi/tech/1359861574/とかまださびしいなあ‥‥
0857デフォルトの名無しさん
2013/03/08(金) 12:53:30.510858デフォルトの名無しさん
2013/03/08(金) 13:00:29.330859デフォルトの名無しさん
2013/03/08(金) 13:00:41.63窓みたいに適当でもしっかり動くLinuxノートが求められてるんだよ
0860デフォルトの名無しさん
2013/03/08(金) 13:04:52.25↓ 会社は急成長
役員に追い出される
↓ ジョブズはピクサーを立ち上げ
apple急降下
↓
ジョブズにまた戻ってくれとお願い
↓ ipod,iphone,ipadを発売
apple復活
↓
ジョブズ死去
↓
appleはその後・・?
0861デフォルトの名無しさん
2013/03/08(金) 13:09:35.46ジョブズが戻ったからというよりiPodやiPhoneを売り出したから復活てのが正解に見える
iPodやiPhone実際に作って売ったのはすごい事だがアイデア自体はずっと前からある平凡なものだった
ジョブズが居なくても遅くとも二年位内の誤差で誰かがやってたよ間違いなくね
0862デフォルトの名無しさん
2013/03/08(金) 13:11:11.82プレインストール買ってLinuxにしてしまえばいい。
快適だぞ
0863デフォルトの名無しさん
2013/03/08(金) 13:14:42.03まぁあれでしょ
appleだってバカじゃないから同じ道はたどらんよ
今度はジョブズの遺したものを小出しにして生き延びる
0864デフォルトの名無しさん
2013/03/08(金) 13:14:46.18そんなに遅れてやっても意味ないんだよ
ジョブズは他人のアイデアをさも自分のアイデアのように
主張して迅速にリードしていったからこそ今のアップルがある
0865デフォルトの名無しさん
2013/03/08(金) 13:19:34.86ジョブズが居なければ一年遅れても一番だろ
くだらないちっぽけな誤差の範囲でしかないのにジョブズが評価されすぎなんだよ
ジョブズ一人がいなくなっただけじゃAppleは倒れないよ
0866デフォルトの名無しさん
2013/03/08(金) 13:23:08.36ジョブズがいなかったら、いまの形、機能とは違う
ものになってたんじゃ?
ジョブズは無駄なものを嫌い、また妥協も許さなか
ったからね
ボタンの少なさや今の操作も、ジョブズのこだわり
があったこそだけど
出来上がった試作をいきなりコップの水の中にしずめ
、出てきた空気をみて「空気の入る隙間があるなら
もっと薄くしろ」とか言ったとか言わないとか
0867デフォルトの名無しさん
2013/03/08(金) 13:24:54.67現にジョブズ追い出し後、appleの経営が
傾いたような
0868デフォルトの名無しさん
2013/03/08(金) 13:27:25.85シンプルイズベストなんてよくある価値観だろ
それをジョブズの専売特許みたいに言うのはマジキチだよ
ジョブズがいなけりゃ他の誰かが少し遅れてやってたのは確定的なんだよ
0869デフォルトの名無しさん
2013/03/08(金) 13:28:16.95ご冥福をお祈りします
0870デフォルトの名無しさん
2013/03/08(金) 13:28:35.83雑魚しかいなかったんだろ
その当時はな
今のAppleなら人材も充実してるからジョブズ一人の穴はいくらでも埋めれる
0871デフォルトの名無しさん
2013/03/08(金) 13:30:28.65なんでジョブズがいなかったら、遅れてでも
今と同じものが出来上がってたと、確定的に
話してるんだよw
あんたがapple好きなのはわかったがw
0872デフォルトの名無しさん
2013/03/08(金) 13:31:37.560873デフォルトの名無しさん
2013/03/08(金) 13:33:28.28いや、ジョブズがいなかったら、
いまのAndroidのスマートフォンみたくなってたよw
0874デフォルトの名無しさん
2013/03/08(金) 13:39:22.02人間てのは不思議なんだが科学水準や文化水準が同程度なら
必ず似たような発想するやつがいるもんなんだよ
微分の発明の話とか有名だろ?
全く同じとは言わんが大差ない(もしかしたらより優れた)デザインの商品が発明されて
Googleが乗っかってAndroidみたいなもの作って、という時代の流れは必ず再現されていたよ
0875デフォルトの名無しさん
2013/03/08(金) 13:44:29.28アップルが出した後、そっくりなものが少し遅れてやってきた。
たしかに
0876デフォルトの名無しさん
2013/03/08(金) 14:04:58.92パクっただけだろw
金型つくるだけなら、一週間でできるよw
アップルがだして売れなかったら、
止めてたろうし
0877デフォルトの名無しさん
2013/03/08(金) 14:07:00.88だめだこいつら
0878デフォルトの名無しさん
2013/03/08(金) 14:09:01.59> 必ず似たような発想するやつがいるもんなんだよ
よしんば発想はあったとしても、量産化に至るまで
責任をもって世に出せるかは別。
まあ、アップル見てなよ。
倒産はしないが、段階的に規模は小さくなっていくよ
0879デフォルトの名無しさん
2013/03/08(金) 14:20:39.56次期iPadもこれっていう、価格に見合った感じないし
新しさはないし。
0880デフォルトの名無しさん
2013/03/08(金) 14:23:32.37安定して不快感ないデバイス出してくれればおけ
0881デフォルトの名無しさん
2013/03/08(金) 14:25:22.570882デフォルトの名無しさん
2013/03/08(金) 14:28:12.40時流に流されて方向を見失っている感はあるな
0883デフォルトの名無しさん
2013/03/08(金) 14:32:45.74ジョブズ無きappleには次のフロンティアは拓けないだろう。
0884デフォルトの名無しさん
2013/03/08(金) 14:33:37.45安定は大事だけど、新しさ、ユニークを失った
appleって終わりだろ
0885デフォルトの名無しさん
2013/03/08(金) 14:34:57.640886デフォルトの名無しさん
2013/03/08(金) 14:36:09.710887デフォルトの名無しさん
2013/03/08(金) 14:39:30.50極端だね、あんた
まあ、他の企業みたいな事やってたら、appleは
落ちぶれるわw
0888デフォルトの名無しさん
2013/03/08(金) 14:42:21.050889デフォルトの名無しさん
2013/03/08(金) 14:47:03.20この根拠がさっぱり語られないのはどうかと思いました
0890デフォルトの名無しさん
2013/03/08(金) 14:50:44.790891デフォルトの名無しさん
2013/03/08(金) 14:53:03.58apple好き過ぎて盲目になった人に、聞いても
ムダ
0892デフォルトの名無しさん
2013/03/08(金) 15:04:07.830893デフォルトの名無しさん
2013/03/08(金) 15:18:21.470894デフォルトの名無しさん
2013/03/08(金) 15:19:17.420895デフォルトの名無しさん
2013/03/08(金) 15:27:28.18既に入ってると仮定
while(pbuf !=NULL){
pbuf++;}
↑だと暴走する
0896デフォルトの名無しさん
2013/03/08(金) 15:30:46.84ぐるっとまわってきて pbuf == NULL と等価な値に来る環境もあるんじゃない?
0897デフォルトの名無しさん
2013/03/08(金) 15:31:54.03’\0’の方がいいのかなあ
0898デフォルトの名無しさん
2013/03/08(金) 15:32:20.210899デフォルトの名無しさん
2013/03/08(金) 15:34:56.16”ポインタの” 比較判定なら NULL
”ポインタの指してる先” が文字列の終端かを判定するなら \0
意図が違うので使い分けしてる
0900デフォルトの名無しさん
2013/03/08(金) 15:35:49.77ぬると比較する例はありましたっけ?
0901デフォルトの名無しさん
2013/03/08(金) 15:37:19.80が答えてくれますたw
ありがとうございます
0902デフォルトの名無しさん
2013/03/08(金) 15:40:22.64宇宙を一周し、ロープの片端を返してくれる
0903デフォルトの名無しさん
2013/03/08(金) 17:08:37.68初期アドレスとポインタサイズによって異なるのか
オーバーフローってどうやって判定するの?
0904デフォルトの名無しさん
2013/03/08(金) 17:15:21.340905デフォルトの名無しさん
2013/03/08(金) 17:32:58.640906デフォルトの名無しさん
2013/03/08(金) 17:34:21.300907デフォルトの名無しさん
2013/03/08(金) 18:20:51.59strcpyしてる隣でstrcatやsprintf(&ptr[x]..やptr[x]=... かまされるとどうしようもないと思うんだが
0908デフォルトの名無しさん
2013/03/08(金) 18:22:29.350909デフォルトの名無しさん
2013/03/08(金) 18:28:25.17・strerror()
・strtok()
以外のstr系でどうやったらunsafeになるんだよ
0910デフォルトの名無しさん
2013/03/08(金) 18:32:34.520911デフォルトの名無しさん
2013/03/08(金) 18:35:48.39909みたいなのが声大きくても仕方ないとも言えるけど
0912デフォルトの名無しさん
2013/03/08(金) 18:37:41.65排他制御は呼出し側の責任でおこなう。
0913デフォルトの名無しさん
2013/03/08(金) 18:54:17.32『テルマエ・ロマエ』のヤマザキマリ
http://topics.jp.msn.com/digital/general/article.aspx?articleid=1713932
0914デフォルトの名無しさん
2013/03/08(金) 19:47:36.29そうそう、iphone と android を並べればわかる。正直 android 陣営はどれもこれもでかすぎ
でもジョブズ亡き後 iphone もでかくなりつつあるなあ‥‥大丈夫か?
0915デフォルトの名無しさん
2013/03/08(金) 19:48:30.29apple なんかよりも人材豊かなはずの Microsoft であのざまだ。大企業病というのは恐ろしいね
そんな暇があるんだったらロマエの続きを早く!くだらん鯉の終わりだったらゆるさない!
0917デフォルトの名無しさん
2013/03/08(金) 20:18:25.94ポアンカレ予想か
0918デフォルトの名無しさん
2013/03/08(金) 21:52:53.20ゆるやかに、だが確実に
0919デフォルトの名無しさん
2013/03/09(土) 03:24:26.26そこでジョブスに向かって「お前だって水に沈めれば空気が出るじゃないか」と
返すよう部下がいればアップルは安泰だったかもな。
0920デフォルトの名無しさん
2013/03/09(土) 03:40:54.440921デフォルトの名無しさん
2013/03/09(土) 03:59:50.240922デフォルトの名無しさん
2013/03/09(土) 09:15:13.72無駄や妥協を許さないっていっても、なにが無駄でなにが妥協かっていう
価値判断は人それぞれだしな。
最初のNeXTcubeを雑誌か何かで紹介するとき、ジョブズはcubeの上で
ジャンプして、ドヤ顔で「こんなことができるコンピュータはNeXTだけだ!」
と言ったとか。
水槽に沈める話は他に元ネタあったよなぁ。と思ったらWalkmanだな。
https://twitter.com/a_ono/status/298356578803924993
0923デフォルトの名無しさん
2013/03/09(土) 09:18:51.94WM_RBUTTONUPの時にポップアップメニューが出るようにしたら
そっちのせいで消されるのかダブルクリックの方の動作をしなくなりました
なんとかなりませんか?
0924デフォルトの名無しさん
2013/03/09(土) 10:22:41.470925デフォルトの名無しさん
2013/03/09(土) 13:39:05.450926デフォルトの名無しさん
2013/03/09(土) 16:48:54.64そんな事マジメに言うバカがいたら、
現時点でappleはなくなってるかもなw
0927デフォルトの名無しさん
2013/03/09(土) 18:07:38.810928デフォルトの名無しさん
2013/03/09(土) 23:37:59.85error: ‘atoull’ was not declared in this scope
と言われます。strtoullは使えるしatollも使えるのですが、atoullは使えないのでしょうか?
UbuntuのGCC 4.6.3です。
0929デフォルトの名無しさん
2013/03/09(土) 23:38:20.33知り合いが林檎使ってたから試しに触らせてもらったら使いにくいだけの産廃だった
0930デフォルトの名無しさん
2013/03/09(土) 23:40:30.38大抵借りただけだと嫉妬からくる批判をしてしまう
半日耐えたら新世界見えたのになぁ
まじ使いやすいよ
これが無いともう仕事やるのだるいって感じ
0931デフォルトの名無しさん
2013/03/09(土) 23:42:09.17もしかして: strtoull
0932デフォルトの名無しさん
2013/03/09(土) 23:46:48.320933デフォルトの名無しさん
2013/03/09(土) 23:55:41.350934デフォルトの名無しさん
2013/03/09(土) 23:57:34.77Cygwinはうんこコマンドプロンプトベースで使い辛い
0935デフォルトの名無しさん
2013/03/09(土) 23:58:36.430936デフォルトの名無しさん
2013/03/09(土) 23:59:10.99C++98の規格にはサフィックスがllの変換関数はない
C++11の規格にはatollやstrtoullはあるけどatoullはない
なのでコンパイラが独自拡張してなければatoullは存在せず使えない
0937デフォルトの名無しさん
2013/03/10(日) 00:01:11.61度胸と言うか、ソフトのラインナップの差だな
0938デフォルトの名無しさん
2013/03/10(日) 00:03:19.930939デフォルトの名無しさん
2013/03/10(日) 00:04:22.74目に優しい美しいディスプレイ、洗練されたGUI設計、ハードへの対応の良さ、高品質なアプリケーションなど
Linuxに無いモノが沢山ある
0940デフォルトの名無しさん
2013/03/10(日) 00:07:18.81特に、ファイルダイアログ上で直接ファイル操作できないのが面倒くさい
その代わり、ファイルダイアログにファイルをドロップすればそこが開くというのは結構使えるけど
0941デフォルトの名無しさん
2013/03/10(日) 00:14:37.90ダサい国産やシナのマシンに窓やLinuxなんて乗っけて公共の場で開いたら指さして笑われるよ
0942デフォルトの名無しさん
2013/03/10(日) 00:15:59.11そんな浮浪者みたいな恰好してるから指刺されて笑われるんだよ…
0943デフォルトの名無しさん
2013/03/10(日) 00:20:44.840944デフォルトの名無しさん
2013/03/10(日) 00:30:33.94今度から笑われないように気をつけようね
0945デフォルトの名無しさん
2013/03/11(月) 13:51:03.71cb->Regist(this,&CTest::print);
じゃなくて
cb->Regist(*this,&CTest::print);
にしないとダメだよ
あとあれはただのテストコードなんで使用は自己責任でお願いします。
0946デフォルトの名無しさん
2013/03/11(月) 19:30:10.24仕事でC/C++を使っている奴は、PC/OSとC/C++開発環境は何を使ってるんだ?
Mac(開発環境なんというのか知らないが)とか使ってるのか
0947デフォルトの名無しさん
2013/03/11(月) 19:50:42.920948デフォルトの名無しさん
2013/03/11(月) 23:56:46.860949デフォルトの名無しさん
2013/03/12(火) 00:19:10.28今はWinXP+VC6
てかWinでXPより新しいOS見た事も触った事も無いんだが(震え声)
0950デフォルトの名無しさん
2013/03/12(火) 07:44:10.74まぁ裏で動いてるコンパイラは別物だけど…
0951デフォルトの名無しさん
2013/03/12(火) 11:35:12.611文字目でループ抜けるんですが、なぜでしょうか?
#define MAX_BUF 20
char str; char ptr[MAX_BUF];
unsigned int cnt=0;
char Comstr(char ch);
int main(void){
char code;
str=getchar();
do{ code=Comstr(str); }
while(code !='y');
return 0;
}
char Comstr(char ch){
if(cnt >= MAX_BUF){ printf("Buffer OverFlow ! \n"); return 'y';
}
else{ ptr[cnt] = ch; cnt++; }
}
0952デフォルトの名無しさん
2013/03/12(火) 11:41:31.44で初期化してるはずが、文字入力したとたん
値が20になってますた
0953デフォルトの名無しさん
2013/03/12(火) 11:48:03.80をdoループ内に入れたら解決しました
0954デフォルトの名無しさん
2013/03/12(火) 13:05:40.880955デフォルトの名無しさん
2013/03/12(火) 13:53:00.010956デフォルトの名無しさん
2013/03/12(火) 14:29:49.04そういう余計なチャチャ入れるのがお前の本質だろ
0957デフォルトの名無しさん
2013/03/12(火) 14:51:21.75必ずいるよね。
>>954
みたいなのが
0958デフォルトの名無しさん
2013/03/12(火) 15:46:47.480959デフォルトの名無しさん
2013/03/12(火) 16:02:48.080960デフォルトの名無しさん
2013/03/12(火) 16:08:45.30C/C++では、文字列
コンピューターでは…
ストリング,記号列:単位として取り扱われる記号,語,文字,ビットを一列に並べたもの.
ランダムハウス英語辞典
0961デフォルトの名無しさん
2013/03/12(火) 16:11:00.700962デフォルトの名無しさん
2013/03/12(火) 17:34:49.05必死になんなよ、おっさん。
スレタイ読めよ
0963デフォルトの名無しさん
2013/03/12(火) 18:16:44.20アルコール燃料 - Wikipedia
正味の燃料エネルギー収支
存続し続けるには、アルコール・ベースの燃料経済は燃料エネルギー収支の正味が黒字になっているべきである。
すなわち、アルコールを生産するのに費やした全ての燃料エネルギー、これには原料植物を耕作、収穫、輸送、発酵、蒸留、配送に費やされた燃料はもちろん、
同様に農場を建設したり農業機具を製作するのに費やした燃料が含まれるのだが、その総計に対しては生産された燃料が内蔵しているエネルギー量を超えるべきではない。
たとえば、「1ガロンの燃料を作り利用するまでに、2ガロンの燃料を消費する」のでは意味が無いと言うことである。
アメリカ合衆国において農業アルコールは一般に穀物から得られるが正味の燃料収支は道はいまだに険しいといった状態である。
0964デフォルトの名無しさん
2013/03/12(火) 18:58:38.60名前を信じたからchar受けしたんろ。勘違いを起こす名前にするなだよな
0965デフォルトの名無しさん
2013/03/12(火) 19:01:31.08getintだったらもっと勘違いするだろ
0966デフォルトの名無しさん
2013/03/12(火) 19:15:39.76プロトタイプは見ることなく関数名だけ見るってどんな状況だよもん
0967デフォルトの名無しさん
2013/03/12(火) 19:53:39.92俺に言うなよ。それやったのが>>951だろ。情況は>>951に聞け
ともかく名前が行き当たりばったりだと、プログラムのつくりも行き当たりばったり
の奴が多いよな。コーディングしながらプログラムをどうするか考えてるんだうが
0968デフォルトの名無しさん
2013/03/12(火) 19:55:30.20おすすめの資料とか気をつけていることとかあったら教えてください
0969デフォルトの名無しさん
2013/03/12(火) 19:58:09.17getcharに対して勘違いするような名前にするなっていったのはお前だろ。
>>951はそんなこと言ってないし、他の誰もそんなこと思ってねーよ。
0970デフォルトの名無しさん
2013/03/12(火) 20:01:08.720971デフォルトの名無しさん
2013/03/12(火) 20:08:08.41わかったから、そういう教育はお前の部下にしろよ。
0972デフォルトの名無しさん
2013/03/12(火) 20:11:36.06その前に、お前は日本語勉強したら?
0973デフォルトの名無しさん
2013/03/12(火) 20:12:13.46二つのプログラムの標準出力を同じ行数の行を繋げてパイプでもう一つのプログラムに渡したいのですがやり方がわかりません
0974デフォルトの名無しさん
2013/03/12(火) 20:14:32.69>勘違いするような名前
それstrって名前を皮肉ってるんだよ
0975デフォルトの名無しさん
2013/03/12(火) 20:16:42.88streambufのこと?
それともそこに流し込むためにプールされる標準入力だろうか
しかし後者なら2つ以上あるハズがないか
0976デフォルトの名無しさん
2013/03/12(火) 20:19:44.96プログラム組めても、人間として失格w
0977デフォルトの名無しさん
2013/03/12(火) 20:19:45.30うまく説明出来ないんですが
プログラム1の出力が
1
2
3
プログラム2の出力が
a
b
c
だとして
プログラム3の標準入力に
1 a
2 b
3 c
を渡したいんです
0978デフォルトの名無しさん
2013/03/12(火) 20:20:52.56人格もプログラムし直したらいいのにねw
0979デフォルトの名無しさん
2013/03/12(火) 20:27:27.27プログラム1の出力をファイルにリダイレクトしつつ -(A)
プログラム2の出力を(パイプ経由で) stdin にもらって
-(A) のファイルを読みながら処理する?
0980デフォルトの名無しさん
2013/03/12(火) 20:50:08.45それぞれの出力をnlでナンバリングして名前付パイプに流してjoinでくっつけろ
0981デフォルトの名無しさん
2013/03/13(水) 01:07:13.400982デフォルトの名無しさん
2013/03/13(水) 01:22:40.75かぁ。
命名が
int set_data(void);
void get_data(int d);
並みにズレている。
名前を軽んずるのはいくない。
0983デフォルトの名無しさん
2013/03/13(水) 02:25:54.96そんなこと書くと噛みつかれるぞ
DQN名前の人が話題になるぐらいのご時勢だしな
名前を軽んずる奴が多いよ
0984デフォルトの名無しさん
2013/03/13(水) 02:42:31.550985デフォルトの名無しさん
2013/03/13(水) 03:05:57.72paste -d' ' <(プログラム1) <(プログラム2) | プログラム3
でいけるかと。
でも、プログラム1の出力が"1 1 1"などのように
プログラム3の標準入力のデリミタと被るケース(プログラム3の入力は行処理は諦めcsvやjsonなどで受け付けるなど)
プログラム1と2の出力行数が異なるケース(お好み)
などと問題点はあるので
仕様が固まるまでは
bash,awk含めた各種コマンド群やらそれらと相性のいい
PerlやRubyなどのLLで試行錯誤するのがいいんじゃないかな。
0986デフォルトの名無しさん
2013/03/13(水) 05:33:40.940987デフォルトの名無しさん
2013/03/13(水) 08:01:18.56自演・自己擁護ワロタwww
0988デフォルトの名無しさん
2013/03/13(水) 08:30:02.96お前の書き込み分りすぎ。
ざっと見て
849 866 871 884 887 891 926 976 972 962
はお前の書き込みじゃないか
で、951もお前
0989デフォルトの名無しさん
2013/03/13(水) 09:46:01.920990デフォルトの名無しさん
2013/03/13(水) 09:55:02.17間違いもあるがw
じゃあ、お前はappleマンセーの下りから
strのいちゃもん、
そして
自己擁護の >>982 = 983まで
ほとんどお前じゃないかw
0991デフォルトの名無しさん
2013/03/13(水) 10:41:14.440992デフォルトの名無しさん
2013/03/13(水) 10:57:45.960993デフォルトの名無しさん
2013/03/13(水) 11:21:41.770994デフォルトの名無しさん
2013/03/13(水) 12:00:11.48Windowsは文句無しに残念すぎるし
Linuxは実用性重視で見た目がダサい(ハードもソフトも)し遊びが少ないしハード対応よくないし
実施、消去法でMac一択にならざるを得ない
他のドマイナーな選択しもあるが大抵はゴミだし機能は良くてもLinuxと同じ理由でアウトなんだよね
0995デフォルトの名無しさん
2013/03/13(水) 12:30:11.84神聖どあほうだな
0996デフォルトの名無しさん
2013/03/13(水) 12:47:51.82いちいち教える身にもなれよ
0997デフォルトの名無しさん
2013/03/13(水) 12:52:10.62お前が自分用に上級者用スレでも立てれば良いだろ
0998デフォルトの名無しさん
2013/03/13(水) 12:55:56.750999デフォルトの名無しさん
2013/03/13(水) 13:10:00.97マンセーくんのせいになったw
1000デフォルトの名無しさん
2013/03/13(水) 13:13:43.5610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。