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


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

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



1 名前:デフォルトの名無しさん [2009/09/17(木) 22:22:59 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.67【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1247937958/l50

【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か   に置換しておくことをお勧めします。

577 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:10:13 ]
foo[N]のNこそ、要素数でしょ?w

578 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:13:42 ]
>>577
あ、そうか!
わかりましたw
T (&)[N] と T &[N]
しかし、この違いがまだ理解できません・・・・orz

579 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:49:02 ]
構文解析のルールの詳しいことはよく理解してないけど

T [N] => Tの配列
T &[N] => Tへの参照の配列
T (&)[N] => T[N]への参照

となってる模様。ちなみに参照の配列はコンパイルできない
このへんは仮引数名の省略とか括弧の意味とかいろいろあって直感的には理解しにくいわ

580 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 11:35:26 ]
配列へのポインタと一緒だけど、演算子の優先順位が & より [ ] の方が高いから
T &a[N] は先に [ ] と結びついて a[N] つまり a は要素 N 個の配列
その個々の要素の型が T&
T (&a)[N] の場合は括弧で明示してあるために先に & と結びついて &a つまり a は参照
その参照先が要素 N 個の配列
関数の引数名は省略できるので、その場合 T a[N] は T [N] に、T (&a)[N] は T (&)[N] になる
というように俺は理解してる

581 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 11:41:45 ]
>>579
>>580
ありがとうございます、大変よく分かりました。

582 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:42:52 ]
stringstreamってどんな感じで実装されてるんでしょうかね?
stringみたいに内部で独自のメモリ管理方法を取ってるのか、vectorのようにベタな連続メモリなのか、それともまったく違うのか・・・

583 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:21:55 ]
宜しくお願いします。このコードをコンパイルしますと
error C2664: 'Point<T>::set' : 1 番目の引数を 'int' から 'int &' に変換できません。
参照を外すと、静的でないメンバ関数の呼び出しが正しくありません。となります。
どのように対処したらいいのでしょうか?
#include <iostream>
using namespace std;
template<class T>
class Point {
 template<class> friend class Point;
private:
 T x_; // x座標
 T y_; // y座標
public:
 Point();
 template <class U>
 Point(const Point<U>& r) : x_(r.x_), y_(r.y_){}
 Point(T x = T(), T y =T()) : x_(x), y_(y) {}
 void set(T& x, T& y);
};
template<class T>
void set(T& x, T& y)
{
 x_ = x;
 y_ = y;
}
int main()
{
 Point<int> ip(12, 34);
 Point<long> lp(ip);
 Point<int>::set(12, 34); // ここで当該エラー
 return 0;
}

584 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:26:49 ]
>>583です
補足というか、行数の関係で書けませんでした、環境はVS2005 です。

585 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:31:47 ]
ごめんなさい、スレを汚してしまいました
解決しましたというか・・・・tohoho情けない
× Point<int>::set(12, 34);
○ Point<int> set(12, 34);



586 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:04:28 ]
いいんだよ^^

587 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:14:26 ]
>583
void set(const T& x, const T& y) にする。

588 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 06:51:57 ]
>>585
set という変数を用意したいのか?
メンバ関数のsetを呼び出したいのかはっきりしろ。

589 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 13:34:28 ]
>>583
もしsetという名前のメンバ関数を呼び出したくて、しかもインスタンス
無しで呼び出したいのなら、そのメンバ関数はstaticでなければならない

590 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 13:37:55 ]
でもインスタンスがないと当然 this が無いから、x_とy_に代入しようと
するとエラーになるな

質問者はその当たりをはっきり質問するように

591 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:02:19 ]
>>583です
皆さん、フォローありがとうございます。今回のset は変数としての振る舞いを期待していました。



592 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 01:01:09 ]
strstrのように、あるメモリ領域から特定のバイト列を検索する標準関数は
あるでしょうか。VC++2008独自関数でもかまいません。
strchrに対するmemchrのようにmemmem?なんてのがあればいいんですけど。

593 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 02:26:50 ]
標準関数は無いと思うけど
もし何度もその探索を実行するなら
(\0終端の文字列と違い、長さがわかっているのだから)
BM法かなんかでの探索を自前で実装するのが良いんじゃないかね。

まあ1度しか使わないのなら、そんなことせずに
先頭文字を探してそこから比較する、いわゆる力任せ法でも充分だろうけどね。

594 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 02:34:09 ]
std::search() とか?

595 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 10:05:53 ]
traitsって何者なんですか?



596 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 10:11:55 ]
曲者

597 名前:デフォルトの名無しさん [2009/10/12(月) 11:42:45 ]
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string s("表示");
int i = s.find('\\');
cout << i << endl;
return 0;
}
これを実行すると、「1」と表示されますが、-1にするには
どうすればよいでしょうか?

598 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 11:56:51 ]
shift_jisを使わない

599 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 11:58:24 ]
>>597
string s("ひょうじ");

600 名前:597 [2009/10/12(月) 11:59:06 ]
自己解決しました。できないようです。
ml.tietew.jp/cppll/cppll_novice/thread_articles/78

601 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 12:45:42 ]
ソースをSJIS以外にしてコンパイル

602 名前:デフォルトの名無しさん [2009/10/12(月) 13:30:11 ]
すみません。

趣味で、VC++のMFCで、いろいろ作っているんですが、もう5年くらいやっていて
だいぶというかかなり本格的なものも作れるようになりました。
自分は文系なんでよく知らないのですが、プログラマに就職しようと思えばできるんでしょうか?

今の職場は単調作業なので、ちょっと刺激がほしいです。よかったら、転職しようとおもうんですが・・・どうでしょうか?

603 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 13:35:23 ]
プログラマ板で聞いてください

604 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 14:32:08 ]
>>602
貴方の人生こんな初心者スレで聞いて棒に振ってもいいんですか??

605 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 16:44:51 ]
関数ポインタの配列を使った関数呼び出しはc++ではどうやって実現させたらいいですか



606 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 16:47:56 ]
>>605
Cと何かちがったっけ??

607 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 16:48:10 ]
普通の関数はCと同じ。
クラスのメンバ関数の関数ポインタは手を出さないほうが身のため。

608 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:14:10 ]
初心者なので詳しく答えられる方だけ回答お願いします

609 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:15:19 ]
初心者なのできちんと説明できない人は口を出さないでください
イライラします

610 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:19:24 ]
初心者ならどんな回答も学ぶべきことがあるはずなのでありがたく思うべきです

611 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:20:50 ]
初心者なのぐぐれません。

612 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:21:32 ]
初心者なのでよみとれません。

613 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:23:43 ]
初心者なので日本語わかりません。

614 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:53:40 ]
それではboost.functionの説明を始めようか

615 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:10:08 ]
がんばってコード書いたのによくよく調べるとSTLとかBoostに同じしかも完全に上位のコードとかがあると泣けるんだがしかし



616 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:17:11 ]
頑張る前に調べような。そういうのが使える環境ならなおさらだ。

617 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:45:28 ]
そりゃ一回は調べるんだけど見逃してたりするんでさ

618 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:49:27 ]
コードを書いたことが明日への礎になる。

619 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:57:45 ]
中で何やってるのか全く理解できないようなコードを使ってトラブルと
どうにもならなくなるしな。

620 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:13:41 ]
>>615 それはいい勉強をしたと思え。
ただライブラリを使ってるだけよりいい経験を積んだんだ。


621 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:27:56 ]
・boostを眺める
・欲しい機能を見つける
・使ってみる
・boostを参照せずに同じ様な機能の縮小版を作ってみる
・挫折する
・boostはどうやってるんだろうと思いながらソースや解説をみて学ぶ

俺は大体こんなかんじで勉強になった functionとか

622 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:23:13 ]
連結リストを実装するのはCでよくある勉強だし、ポインタ完全制覇とか読むと実装したくなるしな。
それをSTLで既にあるじゃんとか言って馬鹿にする奴はいないだろ。

623 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:25:27 ]
そりゃまぁ勉強目的でやるんならね

624 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:32:21 ]
時には馬鹿にならないとやる気にならないこともある。
Boostにあるからいいかではなかなか重い腰が上がらない。

625 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 23:37:36 ]
namespaceでもprivateとかpublic使えればいいのに



626 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 23:50:49 ]
anonymous namespaceが近いんじゃない?

627 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 23:57:13 ]
>>625
staticメンバ関数で、それ専用のクラスを作るのはどうだろう。
気分的にちょっとアレだけど

628 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 00:05:07 ]
無名名前空間とはちょっとちがうかなぁ

namespace hoge {
private:
template <int n> struct is_even { static const bool value = n % 2 == 0; }; // インクルードしても外から使えないようにしたい

public:
template <int n> class fuga { static const int value = is_even<n>::value ? n : 0; 〜〜; };
}

みたいな感じで使いたい
仕方ないからnamespaceをclassかstructで置き換えてそれっぽいことはできてるんだけど
今度はusing namespaceが使えない・・・

629 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 00:30:43 ]
・規約でBoostを禁止しているプロジェクトにげんなりする。

630 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 01:46:06 ]
>>628
namespaceだと名前空間を汚す気があれば突破されてしまうが。

631 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 04:51:45 ]
静的関数のテンプレート関数版みたいなもんか。

クラステンプレートfugaの静的メンバ関数にはしたくなさそうだな。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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