[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/31 01:11 / Filesize : 246 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.59【環境依存OK】



1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.50【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1204124447/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm



285 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:47:08 ]
C/C++ってつおいですか

286 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:48:47 ]
>>285
未定義です

287 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:52:35 ]
BCBの__propertyはVCでも使えますか。VCで書いてみたら、色が変わったので。

288 名前:デフォルトの名無しさん [2008/04/03(木) 15:54:42 ]
MFCを使ってCMainFrameから継承されたウィンドウとCDialogから継承されたダイアログを
MTI(Multiple Top Level Window)風に同時に取扱たいです。

何か参考となるキーワードやソースやwebpageを教えて頂けないでしょうか。

289 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 16:00:47 ]
>>287
VC入ってるのならF1押してヘルプを見るのだ

290 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 16:43:19 ]
>>288
キーワード:
モードレスダイアログ
タイマー

291 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:14:42 ]
VCのどっとねっとでないやつでVBやC#みたいなプロパティを作るものはありますか?

292 名前:288 mailto:sage [2008/04/03(木) 17:16:36 ]
>>290
モードレスダイアログだとダイアログが子になってしまって、ちょっと欲しいものじゃないんです。
親子関係はなし、もしくはCMainFrameを子にしたいんです。

293 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:16:39 ]
ATL



294 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:44:43 ]
>>279
comlex& operator>>(istream & a)


295 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:52:31 ]
>>292
ウィンドウ無か非表示の親からメインフレームとダイアログ作れば兄弟になる

296 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:59:36 ]
_declspec(dllexport)

こういうのって、Cの仕様なんでしょうか? それともコンパイラの方の仕様なんでしょうか?
まとまった文章や文献をご存知の方がいらしゃいましたらよろしくお願いいたしますm(_ _)m

297 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:05:31 ]
DLLはWindows用語

298 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:09:02 ]
文献はMSDNにある

299 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:12:00 ]
>>291
msdn2.microsoft.com/en-us/library/yhfk0thd.aspx

>>296
独自
msdn2.microsoft.com/en-us/library/3y1sfaz2.aspx

300 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:20:47 ]
先頭にアンダースコアが2つ付いたのは
一部の組み込みマクロを除いて、他は全て処理系の拡張仕様。

301 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:21:29 ]
>>297
>>299
ありがとうございます。勉強してみます。

302 名前:300 mailto:sage [2008/04/03(木) 19:09:12 ]
俺は無視か・・・。まあいいけどさ。

303 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:19:55 ]
>>302
ばかじゃねぇのw



304 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:31:24 ]
>>302 質問者がレス読んでから投稿ボタン押すまでに書き込むとスルーされる
アフリカではよくあること

305 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:45:47 ]
>>302
すみません、気づきませんでした^^; ありがとうございます。
同じWindows環境でも、処理系に依存する部分は結構ありそうなので、頑張って調べてみます><

306 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:15:07 ]
template<class T>
class A{
public:
void put( T t )
{
std::cout << t << std::endl;
}

};

このようなテンプレートを用意したとして、

A<int> a;

のようにintとして定義した場合に、put()にint以外の引数を
入れるとコンパイルエラーになるようにしたいんですが

a.put( 1.0f ); // 例えばこの場合コンパイルエラーが出るようにしたい

307 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:21:19 ]
A<float>().put(1.0f);

308 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:34:58 ]
template<class T>
class A{
public:
template<class T2>
void put( T2 t )
{
BOOST_STATIC_ASSERT(boost::is_same<T, T2>::value);
std::cout << t << std::endl;
}

};

309 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:00:35 ]
C言語から自作したAPIを呼び出すにはどうすれば良いのでしょうか?
Windows APIは、#include <windows.h>で呼び出すことができるようなのですが、
ソフトウェア屋が作ったAPIをCのソースから呼び出す方法がさっぱり。

ググっては見たのですが具体的な書き方が見つかりませんでした。
参考になるサイト、もしくはソースがあれば教えてください。

310 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:02:40 ]
extern "C"

311 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:04:05 ]
>>309
DLLを動的に呼び出すか、ソースなら#include ""だろ

312 名前:デフォルトの名無しさん [2008/04/03(木) 22:06:51 ]
operator<<()の定義の中で、宣言なしにwsという変数を使ってwhite spaceを読み込んでいるものをみたのですが、
これが一体なになのかわかりません。コンパイルは出来ているのでつかえるみたいなのですが、、
ググってもいいのがひっかかりません。どうか教えてください。



313 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:20:15 ]
>>310-311
ソフトウェア屋が用意したAPI(恐らくDLL)を手元のCソースから利用したいんですが…
いまいちわからないです。C言語をやるのは初めてで。



314 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:22:13 ]
恐らくとか言われても・・・。
.lib をリンクして提供されてるヘッダファイルインクルードすればいいだけじゃね?

315 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:23:48 ]
LoadLibrary

316 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:35:46 ]
>>312
空白を読み飛ばすマニピュレータのstd::ws

317 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:36:49 ]
>>297
OS/2やTOWNS-OSでもDLLだったけど生き残ったのはWindowsだけか

318 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:40:25 ]
OS/2はNTの元ネタみたいなもんだし

319 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:40:38 ]
>>314
なるほど…APIを触ったことがないのでどういうものかわかりませんでした。
ライブラリと同じような扱いでインクルードできるんですね。
ありがとうございました。

320 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:43:17 ]
OS/2 って何?そんな子はいませんでしたよ!

321 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:45:56 ]
API
ttp://e-words.jp/w/API.html

322 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:42:51 ]
std::mapのinsert()で戻ってくるiteratorとboolのpairな型はどこかに定義されていないの?

323 名前:デフォルトの名無しさん [2008/04/03(木) 23:43:33 ]
c++のcomplexのoperator>>の実装を見たのですが、4+5i という複素数があったとすると、
(4,5) という文字列で入力するようになっていました。実装は()とかの括弧やコンマをみて
ちゃんと処理やってたのですが、普通に考えたら、4+5iとかの文字列の入力の方が自然なような
気がするのですが、(4,5)の方がよいという理由がありますか?
よろしくお願いします。





324 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:47:48 ]
C言語が(,)の入力に対応している点
a+biはC言語が対応していない

325 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:44:30 ]
他人の書いた CやC++ソースが大量にあったとして、
コード解析するときってどうやってる?

Linux 環境で grep や vim + ctags で解析 → gdb で動作確認なんて
やり方してる俺は激しく時代遅れな希ガス

326 名前:デフォルトの名無しさん [2008/04/04(金) 00:51:17 ]
>>325
動作させられるなら、動作させてみて、どの関数が一番頻繁に呼び出されてるかをみてみる。
全体の20%のコードが80%の時間を使ってるというしな。

327 名前:デフォルトの名無しさん [2008/04/04(金) 01:06:04 ]
>>324
c言語が対応してないというのは、どういう意味ですか?
scanf()で一文字づつ読み込んで解析すればできませんか?



328 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:14:47 ]
>>327
文字列を解析すればできるよ
しかし、直接プログラム内で kansuu(x,y)とかけるのとは違う

329 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:15:14 ]
>>327
何がいいたいのかよくわからんが・・・
>complex x = 3 + 2i;
って使い方がしたいんじゃないのか?そいつぁ無理だ。(少なくともおれの知識じゃ)
なぜそこでscanfが出てくるのがさっぱりわからんが
>complex x = "3 + 2i";
なら、実装は可能だ。
ただ、種々の書式に対応するとめんどくさそうなことこの上ない実装になりそう。

330 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:15:48 ]
プログラム内では、(x,y)の形にするか複素数型に変換するしか無い

331 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:22:17 ]
scanf("%d+%di", &x, &y);
みたいな?w

332 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:35:28 ]
いや、入力は文字列で扱ってるんだが、
"1+2i"じゃなくて、"(1,2)"みたいに、実装してあるのは何で?
って質問だと思われw

333 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:54:54 ]
C++標準のcomplexって使ったことないんだけどそういう仕様なの?
仕様なら仕方ないが信じがたいんだがw



334 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:58:38 ]
C++はこうだろ?

std::complex<double>(1, 3)

335 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 02:10:39 ]
complexをiostreamで出力するときに、
"1+2i"じゃなくて"(1,2)"となっているのは何で?
ってことだろ。

336 名前:335 mailto:sage [2008/04/04(金) 02:12:00 ]
× complexをiostreamで出力するときに、
○ complexをiostreamで入出力するときに、

337 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 02:23:09 ]
コピペして使えるようにじゃね?

338 名前:デフォルトの名無しさん [2008/04/04(金) 02:41:24 ]
335の人が言っているのが、こっちの意図です。でも最初の人がC言語ではサポートしていない、
というのがどういう意味だったのかはわかりました。
文字列で扱うんなら、4+5iとかでも問題ないと思ったのですが、(,)で実装してしまったし、、、
4+5iとかはちょっと面倒くさそう。



339 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 07:40:38 ]
iだったりjだったりするからじゃねw

340 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:05:27 ]
テンプレートクラス作って、
そのポインタをlistにつっこんで
イテレータで走査しようとしたら怒られる

//Error
list<Hoge<T>*>::iterator it;

expected `;' before "it"

テンプレートクラスを
テンプレートのままぶち込むのがいけないのか、
それとも別のところがいけないのかでいいんで教えてください

341 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:30:31 ]
- list<Hoge<T>*>::iterator it;
+ typename list<Hoge<T>*>::iterator it;

342 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:34:55 ]
ああ、そういうことだったのね(´・ω・`)

ありがとー

343 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:35:00 ]
>>340
そりゃ型決まってないと無理でないか?
list<Hoge<int>*>::iterator it;
とかならいけると思うけど。




344 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:41:23 ]
gccだとちゃんとエラーはいてくれるがVCだと通るから困る

345 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 15:28:40 ]
を、2ページ目にも修正入ったみたいだな。

346 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:45:18 ]
教えて!!
言語を勉強したいのだが何がお勧め??
C++??Java??

347 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:46:17 ]
目的は?
趣味なら何でもいいと思うよ。

348 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:47:57 ]
>>346
BASIC

349 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:51:06 ]
>>347
>>348
仕事でUNIXのオペレータをしています。
言語を覚えてスキルアップしたい。と思っています。
でも色んな言語がありすぎて何を始めればいいのか
分かりません。今の時代にあっていてこれからも使っていけそうな
言語を教えて下さい。お願いします。

350 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:53:20 ]
>>346
スレタイが読める程度の日本語。

351 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:53:45 ]
UNIXならまずはシェルスクリプトからはじめてみては?
で、awk&sed、perl、python or rubyと進むとか。

352 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:57:41 ]
C/C++のスレで訊かれたなら、やっぱりC/C++と答えるべきか

353 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:58:14 ]
C#といってみる



354 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:59:02 ]
C++では簡単に出来てJavaでやりにくい事
その逆などを教えて下さい。

355 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:03:38 ]
その手の質問はぐぐったほうが丁寧な解説出てくるよ
ここで聞いてもすれ違いのうえ端的だったり極端すぎる答えしか返ってこないよ

356 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:15:06 ]
初心者のためのプログラミング言語ガイド Part7
pc11.2ch.net/test/read.cgi/tech/1200807067/

357 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:28:22 ]
初心者はまずこれを読んで
ポインタを理解すること

builder.japan.zdnet.com/sp/c-programming-language/story/0%2C3800083430%2C20370255%2C00.htm


これができない奴はC/C++いじるの辞めろ
適正が0かマイナスだ

358 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:58:48 ]
>>94

359 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:22:45 ]
それ1週間前のネタ

360 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:50:48 ]
C++にポインタ排卵だろ

361 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:57:43 ]
まあ大部分は排除できるな。

362 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:21:10 ]
constメソッドからでもポインタ型メンバの参照先なら操作し放題とか駄目活用している

363 名前:238 mailto:sage [2008/04/04(金) 22:32:21 ]
protectedでstaticな独自クラスの配列の参照の初期化で他のクラスのメンバ変数を与えたいんですが
無理ですよね・・・?
もし他のクラスのstatic変数なら大丈夫でしょうか?



364 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:36:38 ]
RTTIは実際にどういう場面で使われるんですか?

template<typename T> void hoge(const T &a) {
  if (typeid(a) == typeid(int)) { ... }
}

とかやるんですかね

365 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:37:35 ]
クラスのインスタンス自身への参照ならいくらでも可能だと思うが、
その中のメンバ変数と言われると難しいというか、
そもそもそんな怪しい事しようとしている事にまず疑問を持たざるを得ない。

366 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:38:45 ]
>>364
dynamic_cast も RTTI を利用してる。
typeid はあまり使う事は無いな。

367 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:54:27 ]
dynamic_castなら、よくこういう状況で使いたくなる。
1. ライブラリの用意した基底クラスBから派生した自作クラスDを作る。
2. Dのインスタンスをライブラリに渡す。
3. ライブラリからのコールバックで2で渡したものがB型への参照・ポインタで与えられる。
この例だと結局boost::polymorphic_downcastにするんだけどね。

>>364
その例だったら特殊化で十分。

368 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:00:11 ]
配列の参照のスタティックなクラス変数のクラス定義外での宣言って
Hoge Piyo::(&foo)[][100];
じゃないの・・・?

369 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:05:51 ]
とりあえずコンパイルの通るコードを頼む

370 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:09:04 ]
>>360

多態とか

371 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:09:50 ]
スマートポインタでいい。

372 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:58:47 ]
でいいというか、ポインタ使えないなら、ポインタもどきを使うしかない。
クラスがメンバに参照を持つとコンテナに突っ込めなくなってしまうので、
嫌でもポインタ使わなきゃならないと思うんだけど。



373 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:07:58 ]
大体ポインタを理解できないならスマートポインタも理解できないかと
360は何を言いたかったのだろう



374 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:08:53 ]
スマートポインタはアドレス演算とかやらないから
scoped_ptr くらいなら何とかなるんじゃね?

375 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:15:57 ]
ダメな奴は、やり方が言語仕様に引っ張られる。

376 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:17:42 ]
いやイテレータ使うならアドレス演算と大して変わらないんじゃないか
ポインタわからないようではC++できないというのは真実だと思うけど

377 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:24:51 ]
排卵日

378 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 03:16:18 ]
メンバ変数の文字列の一部を新しい文字列として返したいんですが
どういう方法がありますか?

こういうのです

class Test {
private:
 char data[256];
public:
 char * getStr()
 {
  char *ret = new char[3];
  ret[0] = data[0];
  ret[1] = data[1];
  ret[2] = data[2];
  
  return ret;
 }
};

これを

std::string str = getStr();

このように使った場合retのデリートができないので
メモリリークしますよね?何かいい方法ありませんか?

379 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 04:35:02 ]
const std::string getData() const { return std::string( data ); }

380 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 06:48:36 ]
終端に '\0' を追加するのも忘れずに

381 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 08:04:56 ]
クラスがメンバに参照を持つとコンテナに突っ込めなくなってしまうので、

382 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 08:49:39 ]
void getStr(std::string& str) const {
 str.assign(data, 3);
}
std::string getStr() const {
 return std::string(data, 3);
}

後者は代入する時にコピーが発生するので場合によっては効率悪いが
(初期化の場合は大抵のコンパイラなら戻り値最適化してくれるので大抵コピーは発生しない)、
かといって前者は必ず変数用意しないといけない。

どっちにするか、あるいは両方用意するかはお好きなように。


まあ、string にどんなメンバがあるかくらい見とけ。
www.wakhok.ac.jp/~sumi/stl/header/string.html

383 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 10:43:49 ]
>>381
参照のようなconstなメンバー変数を持つとコピーコンストラクタが書けない
一方ほとんどのコンテナはメモリ確保を自動でするからコピーが発生する
常識だと思ってたんだけどどこかおかしいのか



384 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 10:53:24 ]
デフォルトコンストラクタが書けないと言った方が正しいか

385 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:06:11 ]
コピコンは書けるだろ?
書けないのは代入演算子。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef