C++なら俺に聞け(入門篇)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/10/15(日) 16:37:23C言語はあってC++が無いのは寂しいので作成
0002デフォルトの名無しさん
2006/10/15(日) 16:58:400003デフォルトの名無しさん
2006/10/15(日) 17:00:430004デフォルトの名無しさん
2006/10/15(日) 18:40:250005デフォルトの名無しさん
2006/10/15(日) 20:31:12まあでもこのスレは要らないだろ。
【初心者歓迎】C/C++室 Ver.32【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1160893851/l50
はきだめC/C++下級者の質問箱 2
http://pc8.2ch.net/test/read.cgi/tech/1156206091/l50
0006デフォルトの名無しさん
2006/10/22(日) 21:15:580007デフォルトの名無しさん
2006/10/23(月) 16:37:15バイナリ入力する
場合は、どう書けば良いですか?
char型の配列に入れてしまいたいです。
0008デフォルトの名無しさん
2006/10/23(月) 17:03:300009デフォルトの名無しさん
2006/10/23(月) 23:03:50ありがとうございます。
↓このページの最後のほうに例があったのでやってみます。
ttp://www.io.nara-su.ac.jp/kanrishitsu/manual/FSUNf90/LANG/japanese/C++/stdlib/stdref/ist_1762.htm
ちなみにistreambuf_iteratorというのを初めて知ったんですが、
このやり方が一番簡素に記述できて、速度も最速かどうかは
分からんが、無駄はないはずだ。というような解釈で良いでしょうか?
0010デフォルトの名無しさん
2006/10/23(月) 23:23:18ポータブルだし簡素ではあるけど。
0011デフォルトの名無しさん
2006/10/23(月) 23:57:52C言語の知識で波形解析プログラムのソースを作りました。
このままではコマンドプロンプトでしか起動できないので、
今度はオブジェクト指向にならってGUIを実装させ、アプリケーション
と言えるような代物にしたいと思ってます。
しかし、ソースが巨大でこれからどうすればいいか途方にくれてます。
いろいろ参考書を見てオブジェクト指向やUMLを勉強していますが
扱い方がいまいちわかりません。
アプリ開発の一連の流れを具体的に解説してくれるような書籍なんて
ないでしょうか?
0012デフォルトの名無しさん
2006/10/24(火) 00:01:46統合開発環境を選んで、そのマニュアルやチュートリアルを読むといいよ。
あと、オブジェクト指向と GUI とは、親和性は高いのは確かだけど、直接は関係ないよ。
0013デフォルトの名無しさん
2006/10/24(火) 00:02:07> Win32APIを使うなら
> Visual C++(1)はじめてのWindowsプログラミング 翔泳社
> ↓
> Windows 2000プログラミング標準講座 翔泳社
> ↓
> プログラミングWindows 第5版(上)(下) アスキー
>
> MFCを使うなら
> Visual C++(1)はじめてのWindowsプログラミング 翔泳社
> ↓
> Visual C++(2)はじめてのオブジェクト指向プログラミング 翔泳社
> ↓
> Visual C++(3)はじめてのMFCプログラミング 翔泳社
> ↓
> 標準講座MFC6.0 翔泳社
> ↓
> MFCによるWindowsプログラミング アスキー
> ↓
> プログラミング Microsoft Visual C++ .NET Vol.1 基礎編、Vol.2 活用編 日経BPソフトプレス
> (MFCによるWindowsプログラミングがあればVol.2だけでもよい)
> ↓
> MFCインターナル アジソンウェスレイパブリッシャーズジャパン
>
> スレッド関係
> Advanced Windows 改訂第4版 アスキー
>
> サーバー関係
> プログラミング Microsoft Windows 2000 日経BPソフトプレス
0014デフォルトの名無しさん
2006/10/24(火) 00:02:500015デフォルトの名無しさん
2006/10/24(火) 00:14:06vector使ってよければ、これだけで済む。ややごちゃごちゃした印象は拭えないが。
std::ifstream inputFile("infile", std::ios_base::binary);
std::vector data(std::istreambuf_iterator<char>(inputFile.rdbuf()), std::istreambuf_iterator<char>());
>11
オブジェクト指向とGUIに直接の関係性は何もない。
ただ相性が良いからGUIプログラムにオブジェクト指向が良く使われているだけ。
お前に必要なのはおそらくGUIプログラミング。
WindowsならWindowsプログラミングとかを謳っているような本を選べ。
0016デフォルトの名無しさん
2006/10/24(火) 00:15:57楽にGUIを組めるよ。
0017デフォルトの名無しさん
2006/10/24(火) 00:54:23ありがとうございます。
GUIって聞くとオブジェクト指向って観念を持っていました。
僕は学生なのですが、学校のPCにはVisualC++6.0が入っているので
これを使っていきたいです。
13さんのあげてくださったプログラミング本を参考にさせていただきます。
>>15
すみません、vectorについて教えてください。
0018デフォルトの名無しさん
2006/10/24(火) 00:56:24人に聞く前に自分で調べろ。
0019デフォルトの名無しさん
2006/10/24(火) 03:43:5100207 & 9
2006/10/24(火) 16:47:10了解しました。
>>9で挙げたサイトの例では最後に
while( !iter.equal(end_of_stream_iterator) )
// operator++とoperator*の両方を使用する
cout << *iter++;
という記述があり、そこで全てのストリームを標準出力
しているのだと思いますが、標準出力ではなく、
charに入れておきたい場合、どうすれば良いですか?
(Cの基礎みたいな話になってしまってすいません。)
初めにファイルサイズが分かれば charをその分配列で
確保してから
int i = 0;
while( !iter.equal(end_of_stream_iterator) )
char[i] << *iter++;
と書けば良いのでしょうか?
だとすれば、スマートにファイルサイズを得る方法は
あるのでしょうか?それともループ回数をカウントして
サイズを調べるのでしょうか?
0021デフォルトの名無しさん
2006/10/24(火) 18:23:20大きさを知りたいだけなら、ファイルの終わりまでシークしてtellpを呼べばいい。
中身を読み込むために大きさを知りたいのなら、>15。そもそも大きさを知る必要がない。
std::vectorは単なる動的配列で、その使い方は大したことない。
0022デフォルトの名無しさん
2006/10/24(火) 20:44:11ただ、VC++6.0が中古なんかで安く売ってますが……
やはり、最新のVC++2005の方が初心者としても扱いやすいのでしょうか?
C++2005 Suiteなんかもありますが……どれがもっとも扱いやすいのでしょうか?
VB5.0とVB6.0でも、使ってみると結構あちこち違いがありましたので、
C++でもそういったことがあるのではないかと……。
プログラミング以前の問題ですみませんが、よろしければ教えてください。
0023デフォルトの名無しさん
2006/10/24(火) 21:36:48VC++は版を重ねる度にその標準へ準拠している度合いが高まっている。
もちろん最近のVC++は、.NETへ対応できるようになっているが、
VB-VB .NETの断絶とは違い、標準C++のソースはそのままコンパイルできるようになっている。
0024デフォルトの名無しさん
2006/10/24(火) 21:59:19Expressがタダなんだからまずそれを試せばいい
MFCがないが、ゲームなら要らないだろう
0025デフォルトの名無しさん
2006/10/24(火) 22:46:40using namespace std;
int main()
{
int num;
int* pT;
cout << "何人のテストの点数を入力しますか?\n";
cin >> num;
pT = new int[num];
cout << "人数分の点数を入力してください。\n";
for(int i=0; i<num; i++){
cin >> pT[i];
}
for(int j=0; j<num; j++){
cout << j+1 << "番目の人の点数は" << pT[j] << "です。\n";
}
delete[] pT;
return 0;
}
このコードでポインタpTがcin >> pT[i];のところで点数を記憶してますが、
ポインタを配列名に使えるのでしょうか?ポインタはアドレスを格納する変数なのに整数値を記憶できるのでしょうか?
0026デフォルトの名無しさん
2006/10/24(火) 23:12:46配列のように[]の添え字演算子を利用することができる。
ポインタの場合、p[i]は*(p + i)と同じ。
00277 & 9 & 20
2006/10/24(火) 23:40:14すいません、15さんのアドバイスにに気が付きませんでした。
ありがとうございました。
しかしvectorの使い方と言えば、
vector<chara> vChar
vChar.push('a');
というように、テンプレートとして<>を書いて使うものしか知りません。
実際、例の2行目の
std::vector data(std::istreambuf_iterator<char>(inputFile.rdbuf()), std::istreambuf_iterator<char>());
をコンパイルすると
「クラステンプレートを利用するにはテンプレート引数リストが必要です」
というエラーが出るのでてしまうのですが、どうすれば良いのでしょうか?
0028デフォルトの名無しさん
2006/10/24(火) 23:44:460029デフォルトの名無しさん
2006/10/25(水) 00:48:110030デフォルトの名無しさん
2006/10/25(水) 01:44:420031デフォルトの名無しさん
2006/10/25(水) 01:45:16エラーメッセージ嫁よ。
0032デフォルトの名無しさん
2006/10/25(水) 03:09:15public:
ClassA(){・・・・;}
friend ClassA operator●(const ClassA& x, const ClassA& y)
{
・・・・;
}
}
class ClassB{
public:
operator ClassA(){return ・・・・;}
}
で引数x,yにClassB型の値が代入された場合、x,yはClassAのコンストラクタによってClassA型に
変換されるのでしょうか? それともClassBの変換関数によってClassA型に変換されるのでしょうか?
0033デフォルトの名無しさん
2006/10/25(水) 03:18:06ClassA のコンストラクタは引数なしのものしか宣言されていないので
ClassB → ClassA の変換はできない。というわけで、おそらく
変換関数の戻り値によって初期化される。
0034デフォルトの名無しさん
2006/10/25(水) 03:56:22早々の回答ありがとうございます。
つまり、(デフォルト)コンストラクタについてはオブジェクトを新たに作成したり[ClassA x]、意図的に
使わない限り[ClassA* x=new ClassA()]呼び出されることはない・暗黙に呼び出される場面はないと考え
ればよいのでしょうか?
003532
2006/10/25(水) 04:29:04失礼しました。回答の内容取り違えてました。
ClassA のコンストラクタは引数なしのものしか宣言されていない
=ClassA内に「ClassA(ClassB c){・・・・;}」というコンストラクタが存在しない
という意味ですよね。申し訳ありません。ちなみに、このコンストラクタが
ClassA内に存在した場合も結果は同じになるのでしょうか? 連続質問で誠に
恐縮です・・・。
003622
2006/10/25(水) 08:36:25>>23
え? VC++とVC++.NETというのは、別のものだったのですか?
VC++.NET 2003の時期バージョンが、VC++2005だと思ってました……。
>>24
Expressは、MFCがないだけの違いだったのですか。
確かに、それならまずはExpressから試してみようかと思います。
ただ、C++ Builderというのが、VBと同じRADで、VC++よりコンパイラが
速いと聞いており、とっつきやすいかなとも思っているのですが……
やはり一般的なのはVC++なのでしょうか?
C++では、ゲームはDirectXをメインに使っていこうと思っているので、
RADはあまり必要ないかとは思うのですが……。
0037デフォルトの名無しさん
2006/10/25(水) 09:52:19幻想にして幻覚。
コードの内容にも寄るが、最適化性能でVCの右に出るコンパイラはまずない。
最適化を最大の売りにしてるICCですらほとんど勝てない有様。
コンパイル速度のことを言ってるならそうかもしれないが、それほど膨大なコードを書くわけでもあるまい。
003822
2006/10/25(水) 13:37:50すみません、確かにコンパイル速度のことです。
ゲームプログラミングの本で、C++ Builderのコンパイラが付属していたりしたので、
VC++と比べてどちらがよいか迷っていたのです。
雑誌やネット記事には、長所ばかりが書いてあって、具体的な問題点などが書いてないので、
どうにもどれもこれもがよいように見えてしまって……。
ですが、やはりここは一般的なVC++の2005Expressから入って、じっくり勉強してゆこうと思います。
ありがとうございました。
0039デフォルトの名無しさん
2006/10/25(水) 17:04:16> VC++.NET 2003の時期バージョンが、VC++2005
これは間違っていないが、VC++ 2005も.NETプログラミングに対応している。
VB 2005も.NETと付いていないものの、プログラミング言語としてはVB .NETであることと同じ。
004022
2006/10/25(水) 18:51:35話がのびてしまうのですが、たとえばネット対戦のゲームを作成しようとした場合は、
.NETの、.NET Frameworkを利用したほうが作りやすいものなのでしょうか?
.NET Frameworkで作ったソフトは、配布する際、その環境に、.NET Frameworkが
インストールされている必要があるとかで、ゲームにはあまり利用されていないようですが、
今後はゲーム制作にも多く利用されていくようになるのでしょうか?
それとも、やはり現在一般的なVC++&DirectXの環境が最適なのでしょうか?
どうにも、.NETの利便性がいまだによく掴めないままでいるのです。
今後は何もかもが.NETの時代だと、あちこちでは言われているようなのですが……。
よろしければこの点についても教えてください。
004125
2006/10/25(水) 19:11:42お礼遅くなりました。ありがとうございます
つまり配列名がポインタ名だった場合、それは*(p+i)を意味するということでよろしいのでしょうか?
0042デフォルトの名無しさん
2006/10/25(水) 20:13:49Borland のほうがコンパイルが速いってのはガチ。
>それほど膨大なコードを書くわけでもあるまい。
コンパイルに 1 秒かかるのと 5 秒かかるってのでは差はデカイぞ。
コンパイル速度に差がありすぎるから、俺はコンパイラ非依存なコードを書くとき
開発中は主に Borland を使う。もちろんリリース版のコンパイルには VC++ を使うが。
0043デフォルトの名無しさん
2006/10/25(水) 20:20:520044デフォルトの名無しさん
2006/10/25(水) 20:40:00そういうこと。
実は、式の中で配列は原則その先頭要素を指すポインタに変換される規則があり、
逆に配列に対しての添え字演算子を使った場合も、その式は成り立つ。
0045デフォルトの名無しさん
2006/10/26(木) 02:15:340046デフォルトの名無しさん
2006/10/26(木) 02:16:461秒と5秒の差が問題になるほどコンパイルするのか?
普通は入力やデバッグに対して充分無視できる程度しかコンパイルしないと思うのだが。
0047デフォルトの名無しさん
2006/10/26(木) 02:21:02感覚の問題だから実際にやってみてもらわんとわからんと思う。
Windows のデスクトップを右クリックした時にポップアップメニューがでるまでに
ちょっとでも待たされたら嫌だろ? それと同じような感じ。
0048デフォルトの名無しさん
2006/10/26(木) 02:29:21まさか、最適化しつつ遅いなんて無意味なことを言うわけもないとは思うのだけどね。
0049デフォルトの名無しさん
2006/10/26(木) 02:46:130050デフォルトの名無しさん
2006/10/26(木) 03:14:12おぬし、拙者と同じ棒用派だな?(笑)
俺もその本にはとても世話になったよ。
0051デフォルトの名無しさん
2006/10/30(月) 19:54:500052デフォルトの名無しさん
2006/11/20(月) 04:34:06とはどう言う意味でしょうか?
あと
for(;;)と言うのも参考書に載っていますが
意味がわかりませんので
これら二つの、ご助言を宜しくお願い致します。
0053デフォルトの名無しさん
2006/11/20(月) 06:23:13do while (p_turn = !p_turn); と同じ。
それから
for(;;)は while (1) と同じ
0054デフォルトの名無しさん
2006/11/20(月) 06:45:360055デフォルトの名無しさん
2006/11/20(月) 11:12:010056デフォルトの名無しさん
2006/11/20(月) 13:09:21有難うございました。
>>54-55
それを書いたの私ではありません、私以外の誰かがしたことです。
それを、"マルチかよ死ねカス" なんて酷い
0057デフォルトの名無しさん
2006/11/20(月) 13:15:27そう思うんならそこ行って「これは私ではありません」と書いてこいや
0058デフォルトの名無しさん
2006/11/20(月) 19:12:30違くね?
for (初期化式; 継続条件式; 再初期化式)じゃねーの?
for(;; p_turn = !p_turn)
これだと初期化なし、条件式なしで再初期化時に p_turn の否定を p_turnに入れてるだけじゃねーの
p_turn = !p_turn は比較演算じゃない、否定を代入してるだけ
つまり
while (1){
p_turn = !p_turn;
・・・・
・・・・
}
だろ
005958
2006/11/20(月) 19:13:35while (1){
・・・・
・・・・
p_turn = !p_turn;
}
こっちだな
0060デフォルトの名無しさん
2006/11/20(月) 20:33:46継承したクラスで、
class A{
private:
int data;
public:
int DataCal(){
return data*2;
}
int getData(){
return DataCal();
}
・・・
}
みたいのがあるときに、継承クラスでDataCalをオーバーライドしたとすると
class B :public A{
public:
int DataMod(){
return data*3;
}
・・・
}
このときってgetDataもオーバーライドしないといけない??
0061デフォルトの名無しさん
2006/11/20(月) 20:40:05のー
0062デフォルトの名無しさん
2006/11/20(月) 20:42:29ぶっちゃけvirtualつけろって話。
0063デフォルトの名無しさん
2006/11/20(月) 20:46:22class A{
private:
int data;
public:
int DataCal(){
return data*2;
}
int getData(){
return DataCal();
}
・・・
}
class B :public A{
public:
int DataCal(){
return data*3;
}
・・・
}
です。
>61
getData()はオーバーライドしなくても、
class BでオーバーライドされたDataCal()が使われる?
0064デフォルトの名無しさん
2006/11/20(月) 20:48:31オーバーライドではなくて隠蔽だろう
006561
2006/11/20(月) 20:49:00A *a;
B b;
a = &b;
a->getData() は
クラスAのgetData()が呼ばれる
0066デフォルトの名無しさん
2006/11/20(月) 20:56:42知ったか乙
0067デフォルトの名無しさん
2006/11/20(月) 20:58:20virtual調べてきます_| ̄|○
006861
2006/11/20(月) 21:06:370069デフォルトの名無しさん
2006/11/20(月) 21:47:07do {...; } while (p_turn = !p_turn, 1);
0070デフォルトの名無しさん
2006/11/20(月) 22:40:43俺もまだ未熟だから詳しいことはいえないんであれだが・・・
オーバーロードとか意味間違えてるんじゃないのか?
たぶんおまいさんがやりたいことを実行するなら、
DataCalを仮想化しないとだめだろ。
継承、オーバーロード、仮想化っていうのをいまいち理解してないと思うんだが。
0071デフォルトの名無しさん
2006/11/20(月) 22:53:15TRUE
0072デフォルトの名無しさん
2006/11/20(月) 22:53:53>>61
getDataを仮想化する理由が意味不明。
むしろこのクラス設計なら絶対仮想化しちゃいけない。
0073デフォルトの名無しさん
2006/11/20(月) 22:55:05それはなに?
#c99ならtrueだろ、ってのは判らんでもないが。
0074デフォルトの名無しさん
2006/11/20(月) 22:56:12よく見たらめちゃくちゃやってるな・・・>>63よ・・・
getDataとか関数に名前与えてるのに中身に余計な関数書くんじゃねえよ。
命名規則ぐらいちゃんとしてこいや。
0075デフォルトの名無しさん
2006/11/20(月) 23:34:31>>61だけど
>>65は勘違い...スマソorz
>>63
んでvirtualにすんのはA::DataCal();
そうしないとA::getData()がよばれるがA::getData()内のDataCal()はA::DataCal()を呼び出す
virtualにすればA::getData()はB::DataCal()を呼び出すようになる
とA::dataはBからアクセスできないんじゃないか?Aのプライベートメンバだし
protectedで宣言しなきゃいかんのでは?
0076デフォルトの名無しさん
2006/11/21(火) 01:20:010077デフォルトの名無しさん
2006/11/21(火) 01:55:06>>63の場合作法の段階から間違ってると思うんだよね・・・。
getData()を行うならば、
そいつはプライベートからdataの値を取ってくるだけにするべきなのに、
そうではないし。
スマートに書こうとすればこうなるはず。
classA側の処理
int& getData() { return data; }
classA, classBのDataCal処理
virtual int DataCal() const { 各々の処理; return 返したい値; }
コレならすっきりしてわかりやすいと思うんだけど。
0078デフォルトの名無しさん
2006/11/21(火) 01:59:05const int& getData() const { return data; }
0079デフォルトの名無しさん
2006/11/21(火) 14:34:01荒らしっぽいレスですまんが、老婆心からのコメント。
0080デフォルトの名無しさん
2006/11/21(火) 15:32:04戻り値変数でもまったく問題ないけど、
ちょっと今回は思うところもあって、俺は参照でもいいと思うんだけど。
クラスAにはint dataっていう変数を持ってるのは確実、
内部でgetData()*2という計算をDataCal()で持とうとしている。
そんな理由でconst int&にしたんだけど間違ってだろうか?
普通の代入の場合は参照の値のコピーが行われるからint getData();と同じように振舞うしさ。
008180
2006/11/21(火) 16:31:320082デフォルトの名無しさん
2006/11/21(火) 16:34:20外にどうしてもアドレス公開したいのなら別だが、そういうコードが求められる状況はかなりぬるぽ。
0083デフォルトの名無しさん
2006/11/21(火) 16:40:13まあ読み込んだ3Dオブジェクトを利用するとかいう大量データを扱う時なんだけどさ(;´Д`)
まあ変に屁理屈書いてすまん。
0084デフォルトの名無しさん
2006/11/21(火) 17:40:38ポインタサイズ以下の基本型なんてのを意識するのはGenericとはいえんな
そんなのはコンパイラの仕事だ
0085デフォルトの名無しさん
2006/11/21(火) 17:45:48Generic な人でもいつかどこかで int くらい使うだろ。
0086デフォルトの名無しさん
2006/11/26(日) 19:07:400087デフォルトの名無しさん
2006/11/26(日) 19:56:210088デフォルトの名無しさん
2006/11/26(日) 20:47:09でも、知ってて損はない
0089デフォルトの名無しさん
2006/11/27(月) 02:43:530090デフォルトの名無しさん
2006/11/27(月) 03:09:450091デフォルトの名無しさん
2006/11/27(月) 04:28:330092デフォルトの名無しさん
2006/11/27(月) 06:13:20あまり実用的でなくてもいいです
どこか参考になるところはありませんか?
0093デフォルトの名無しさん
2006/11/27(月) 09:51:010094デフォルトの名無しさん
2006/11/27(月) 13:03:26機械語
0095デフォルトの名無しさん
2006/11/27(月) 16:31:39Whitespace
0096デフォルトの名無しさん
2006/11/27(月) 19:54:12それは処女も中身は汚いってこと?
0097デフォルトの名無しさん
2006/12/03(日) 08:36:26クラスの概念がよくわかりません
入門書では、車(オブジェクト)に対してハンドル、タイヤetc(メソッド)の関係のように
比喩した解説が多いのですが分かり辛いのですが
要するにCのtypedefやenumのような構造体と同じだと思うのですが
そのように理解してもOKですか?
簡単な事を難しく解説して初心者をかく乱している気がするのですが・・・・・
0098デフォルトの名無しさん
2006/12/03(日) 09:01:48そのとおり。
0099デフォルトの名無しさん
2006/12/03(日) 09:07:07分析・設計段階の話なので実装のことは考えないほうが吉。
データベースの正規化が自分の感覚としては近いかな。
0100デフォルトの名無しさん
2006/12/03(日) 10:46:32>>97です
>>データベースの正規化が自分の感覚としては近いかな。
あたらずしも遠からずって事で納得しました。
0101デフォルトの名無しさん
2006/12/03(日) 15:42:13×そのとおり
○そのとおり
>>100
×あたらずしも遠からず
○当たらずとも遠からず
>>97
実装上は、C++のクラス ≡ C++の構造体 ⊃ Cの構造体、
C++の構造体 ≒ Cの構造体+(その構造体に関与する)関数。
継承だとかテンプレートだとかは脇に置いて、取り敢えず
Cで構造体とそれを操作する関数を纏めたものがクラスって認識で医院で内科医?
0102デフォルトの名無しさん
2006/12/03(日) 18:56:010103デフォルトの名無しさん
2006/12/03(日) 20:12:050104デフォルトの名無しさん
2006/12/03(日) 22:24:03>○そのとおり
吹いた。馬鹿だ。
0105デフォルトの名無しさん
2006/12/04(月) 01:52:030106デフォルトの名無しさん
2006/12/04(月) 18:14:500107デフォルトの名無しさん
2006/12/06(水) 22:33:00オーバーライドされる関数にvirtualを指定したりしますが、なぜですか?
別にvirtualを指定しなくてもオーバーライドできますよね?
教えてください。
0108デフォルトの名無しさん
2006/12/06(水) 22:38:570109デフォルトの名無しさん
2006/12/06(水) 22:43:04その回答は意味が無い。
0110デフォルトの名無しさん
2006/12/06(水) 23:01:52派生クラスがオーバーライドするんだと言う意思表示だと思えばいい。
0111デフォルトの名無しさん
2006/12/06(水) 23:12:45とりあえず仮想関数とかでぐぐってみ
0112デフォルトの名無しさん
2006/12/06(水) 23:17:380113デフォルトの名無しさん
2006/12/06(水) 23:45:57#include <iostream>
class A { public: void func() { std::cout << "A::func()" << std::endl; }};
class B : public A { public: void func() { std::cout << "B::func()" << std::endl; }};
class C { public: virtual void func() { std::cout << "C::func()" << std::endl; }};
class D : public C { public: void func() { std::cout << "D::func()" << std::endl; }};
int main() {
A *a = new B(); a->func();
C *c = new D(); c->func();
return 0;
}
0114デフォルトの名無しさん
2006/12/06(水) 23:48:33実際の型に応じた関数を呼び出してくれないという例か
0115デフォルトの名無しさん
2006/12/07(木) 15:21:36という質問かと思った。
0116デフォルトの名無しさん
2006/12/07(木) 19:23:47いや、そういう質問だろう。多いというわけじゃなくて、まちまちなのが気になってるみたい。
0117デフォルトの名無しさん
2006/12/07(木) 21:12:21かどうかは書いてないので、どっちの話題かは確定できないな。
0118デフォルトの名無しさん
2006/12/07(木) 22:28:41いや、基底クラスのものだったら(virtual付けないと)オーバーライドできないんだから、
>>107みたいな質問は出ないでしょ。
よって、派生クラス側のメンバ関数に付けるvirtualのことかな。
0119デフォルトの名無しさん
2006/12/07(木) 23:09:15int hogehoge[10];
func( hogehoge );
void func( int b[] ){
}
と書いた場合、int bは
int* b ですか?それとも int* &b ですか?
0120デフォルトの名無しさん
2006/12/07(木) 23:18:180121デフォルトの名無しさん
2006/12/07(木) 23:24:01基底クラスかどうかなんてわかるの?
0122デフォルトの名無しさん
2006/12/07(木) 23:24:46int& b
0123デフォルトの名無しさん
2006/12/07(木) 23:28:51void func( int b[] ){ }
を
void func( int *b ){ }
か
void func( int *&b ){ }
かって話なら
void func( int *b ){ } これ
0124デフォルトの名無しさん
2006/12/08(金) 00:19:450125デフォルトの名無しさん
2006/12/08(金) 00:21:46本当。
map のイテレータが無効になるのは、それが指す要素がコンテナから削除されたときだけ。
0126デフォルトの名無しさん
2006/12/08(金) 00:25:57本当だったんだ。
mapがそうならlistやsetも?
0127デフォルトの名無しさん
2006/12/08(金) 00:30:49map がそうだからってわけじゃないけど list や set もそう。
0128デフォルトの名無しさん
2006/12/08(金) 00:33:41>>125,127
サンクス
0129Nw
2006/12/08(金) 00:40:1310: 20: ってな感じで・・
1.数A,B,Cを入力してA>BかつB>CならA*B*Cの計算を、A>BかつB≦Cなら
A+B+Cの値を、A≦BならA/B+Cの値を求めるプログラム。
2.1+2+3+・・・・+X の合計が初めて200を超える X の値を表示するプログラム。
3.1,3,5,7,9,・・・・, X までの和を求め、和が1000を超えない X の最大値を表示するプログラム。
4.X,Yを入力し、X=1でY=2なら"A"と、X=3でY=4なら"B"と、X=5でY=6なら"C"と表示し、
上記以外の数字の組み合わせを入れたときはプログラムの最初に戻るプログラム。
5.2つの数XとYを入力し、両方マイナスのときは√(X*Y)を、どちらか一方がプラスのときはX*Yを、
両方プラスのときはX/Yのそれぞれの値を表示するプログラム。
6.自然数MからNmでの和と平均を求めるプログラム。(NとMの値は入力するものとし、M<Nとする)
S=M+・・・・+N
7.Y=3X^3 +2X^2 +X +15 において、Xの値を-10から10まで、0.5刻みで変化させてYの値を求めるプログラム。
8.AAB+BB=BAA つまり、(100×A+10×A+B)+(10×B×B)=(100×B+10×A+A)となるAとBを
求めるプログラム。(A,Bは一桁の整数)
9.ABA×B=BCBつまり(100×A+10×B+A)×B=(100×B+10×C+B)となるA,B,Cを求めるプログラム。
10.三角形の辺A,B,Cにおいて、それぞれを1から20まで変化させたとき、直角三角形となる組み合わせをすべて
求めるプログラム。
11.Y=6X^2 - 5X - 9 の式において、-10≦X≦10 の範囲でYの最大値を求めるプログラム。
(Xは、0.2刻みとする)
0130デフォルトの名無しさん
2006/12/08(金) 00:50:310131デフォルトの名無しさん
2006/12/08(金) 01:04:56ここはC++だ!!!!!
出直せ。
0132デフォルトの名無しさん
2006/12/08(金) 01:28:37皆さんは、どんな使い分けをしていますか?
0133デフォルトの名無しさん
2006/12/08(金) 01:30:130134デフォルトの名無しさん
2006/12/08(金) 01:46:160135デフォルトの名無しさん
2006/12/08(金) 02:53:38例えば別に無視してしまっても構わないイベントをハンドリングするコールバック関数とか。
使う側に「必ずここは自分で実装してもらわないと困る!」って強制したい場合は純粋仮想にする。
例えばクラス保守責任者の名前を文字列で返す関数を組み込め!とか上司の命令で決まったなら、
純粋仮想にして各担当者にオーバーライドしていただく。
至極簡単。
0136デフォルトの名無しさん
2006/12/08(金) 03:24:13モジラのとこに何か書いてあった。
文法上は規定クラスにあれば十分だが、警告を出すコンパイラもあるので全部つけとけということだそうです。
ttp://www.mozilla-japan.org/hacking/portable-cpp.html#virtual_on_subclasses
0137デフォルトの名無しさん
2006/12/08(金) 11:31:390138デフォルトの名無しさん
2006/12/09(土) 01:39:14モジラ内ではそう決まっちゃったからそうするしか無いのかもしらんが、
何かの指針になる様なルールじゃねえっすよ。
うん。
でもまあ、これに限っては付けた方がいいのかね。
書かないで済むものは書かないのがC++流って気もするけど。
0139デフォルトの名無しさん
2006/12/09(土) 02:34:48テキストエディタでプログラムを書くときは、エディタは何を使用していますか?
0140デフォルトの名無しさん
2006/12/09(土) 03:18:490141デフォルトの名無しさん
2006/12/09(土) 03:21:30【エディタ】ソース何で書いてる? 1スレ目
http://pc8.2ch.net/test/read.cgi/tech/1164154920/
0142デフォルトの名無しさん
2006/12/09(土) 21:12:55> do {...; } while (p_turn = !p_turn, 1);
whileの中のこの式ってありですか?どういう意味ですか?
代入が成功したらtrueで繰り返しというのはわかるのですが、その後ろの
",1"がわかりません。
0143デフォルトの名無しさん
2006/12/09(土) 21:16:20代入に失敗も糞も無い。
do while 使うんなら do {...; p_turn = !p_turn; } while(1) で同じこと。
と思ったけど、 continue とか使うと違うのかな?
0144デフォルトの名無しさん
2006/12/09(土) 21:38:02> do {...; p_turn = !p_turn; } while(1)
これはわかるんですが、それをwhile (p_turn = !p_turn, 1);という書式に
書き換え可能なんですか?
0145デフォルトの名無しさん
2006/12/09(土) 21:39:42ちがうよ
while (p_turn = !p_turn, 1);
そもそも上の式では p_turn = !p_turn は評価されない
while の式として評価されてるのは 最後(一番右の) 1 だけ
つまり while は常に ture でループするってこと
0146デフォルトの名無しさん
2006/12/09(土) 22:00:24カンマ演算子ってやつだ。
>>145
評価はされる。結果が使われないだけ。
0147デフォルトの名無しさん
2006/12/09(土) 22:01:03> そもそも上の式では p_turn = !p_turn は評価されない
代入は実行されるんですよね?こういう書式が可能とは知りませんでした。
while(1){p_turn = !p_turn;...}と同じですよね?
条件として評価できるものがくるまで、式を何個も置くということも
できるのですか?
0148デフォルトの名無しさん
2006/12/09(土) 22:02:42> カンマ演算子ってやつだ。
ご教示ありがとうございます。調べてみます。
0149145
2006/12/09(土) 22:05:06書き方悪かった、結果が評価されないって意味だ
>>147
追記しとく
while が繰り返しをするかどうかは式評価で決まるわけだが
「,」は左の式を評価した後に右の式を評価しろというもの
たとえば while( a == b , a < 10 , b < 50 ) という式があったとする
この式の評価は左の a==0 を評価し、次にa < 10 を評価、最後に b < 50 を評価するのだがこの式全体の評価は最後の b < 50 だけで決まる
最初と真ん中の a == b と a < 10 は意味を成さない(意味の無い比較)
使い方とすれば while( a=a*2 , b=a+10 , b < 50 ) のように式の中で代入をして最後に比較したいときなど
0150デフォルトの名無しさん
2006/12/09(土) 22:14:00「評価」を言語の動作についての用語として使うなら「結果が評価されない」も意味不明だろ。
あと「式全体の評価は〜」もおかしい。「式全体の値は〜」ってところか。
0151デフォルトの名無しさん
2006/12/09(土) 22:16:09>最初と真ん中の a == b と a < 10 は意味を成さない(意味の無い比較)
最初の有効な条件式を評価する、ということではないのですか?
例えば、こんなのは可能ですか?
int i = 0;
while(i++, i < 10){...}
0152デフォルトの名無しさん
2006/12/09(土) 22:18:37条件式かどうかは関係ない。可能かどうかは、人に聞く前に自分でやってみろ。
0153151
2006/12/09(土) 22:20:170155デフォルトの名無しさん
2006/12/09(土) 22:33:200156デフォルトの名無しさん
2006/12/09(土) 22:33:27というか、スレタイ見てね(はーと
>>154 ありがとうございます。
問題ない=10回繰り返す=i > 0になったところで、永続ループにならない、
と理解しましたが、OKですね。
月曜日に試してみます。
0157デフォルトの名無しさん
2006/12/09(土) 22:34:590158デフォルトの名無しさん
2006/12/09(土) 22:41:360159デフォルトの名無しさん
2006/12/09(土) 23:00:36>>155
なんかあったっけ?
0160デフォルトの名無しさん
2006/12/09(土) 23:38:530161デフォルトの名無しさん
2006/12/10(日) 16:40:57it = vec.begin();
std::advance(it, n);
は思いついたけどこれって線形時間掛かるんじゃなくて?
0162デフォルトの名無しさん
2006/12/10(日) 16:51:350163デフォルトの名無しさん
2006/12/10(日) 16:52:14ちなみに大抵の処理系でstd::advanceは各イテレータコンセプトについて
適切に実装されているから上のような書き方をする必要はない。
規格でそう決まっていたかはシラネ
0164デフォルトの名無しさん
2006/12/10(日) 17:40:520165デフォルトの名無しさん
2006/12/10(日) 17:46:000166デフォルトの名無しさん
2006/12/10(日) 18:00:52今までforループ使ってた…
勉強になるな
0167デフォルトの名無しさん
2006/12/10(日) 18:14:42>>162-164
�d
0168デフォルトの名無しさん
2006/12/10(日) 18:28:56一つ目の標準出力 (例) cout << "前画面\n"
をしてから、
二つ目の標準出力 (例) cout << "次画面\n"
をしたときに、
------------------------
前画面
次画面
------------------------
ではなく、最初に出力した内容を消去して
------------------------
次画面
------------------------
とする方法を教えていただけますか?
0169デフォルトの名無しさん
2006/12/10(日) 18:36:12標準ではできない。たぶんコンソール操作を行うライブラリを使う必要がある。
0170デフォルトの名無しさん
2006/12/10(日) 18:53:05レスありがとうございます。
少しWEBで検索しました。
>コンソール操作を行うライブラリ
これは、
ttp://www.kumei.ne.jp/c_lang/intro/no_61.htm
みたいなのを自作するということでしょうか?
0171デフォルトの名無しさん
2006/12/10(日) 19:11:25コンソールアプリなら
#include <conio.h>
void clrscr(void);
これ使えねー?
0172デフォルトの名無しさん
2006/12/10(日) 19:33:58>void clrscr(void);
使い方は、
ヘッダをインクルードして、
clrscr();
ですよね?
エラーが出てしまいます。(なんで?)
VS EEでは使えないのでしょうか?
(.\main.cpp(73) : error C3861: 'clrscr': 識別子が見つかりませんでした)
0173デフォルトの名無しさん
2006/12/10(日) 19:47:180174デフォルトの名無しさん
2006/12/10(日) 20:01:53WindowsSDKってのは、Windows Platform SDKのことですか?
これは、
高機能でパフォーマンスに優れた Windows アプリケーションを
作成できます。
と書いてありました。
私はコンソールアプリケーションで作成していますが、いいですか?
ダウンロードは、3つくらい候補があるようですが、
英語で私には難しいかもしれません。
PSDK-amd64.exe 1.3 MB
PSDK-ia64.exe 1.4 MB
PSDK-x86.exe 1.3 MB
0175デフォルトの名無しさん
2006/12/10(日) 20:08:56VS EEって何?
0176デフォルトの名無しさん
2006/12/10(日) 20:12:39>VS EEって何?
Visual C++ 2005 Express Editionです。
0177デフォルトの名無しさん
2006/12/10(日) 20:14:17>VS EEって何?
略している人がいましたが、VSなんて略さないかもしれないですね。
略すならVCかも。
0178デフォルトの名無しさん
2006/12/10(日) 20:19:48変に略さんでくれ
http://msdn2.microsoft.com/ja-jp/library/system.console.clear(VS.80).aspx
これのC++の部分
Console::Clear(); と書いてある
0179デフォルトの名無しさん
2006/12/10(日) 20:20:32PlatformSDKとWindowsSDKは違う。
Platform SDK + NET SDK = Windows SDK
0180デフォルトの名無しさん
2006/12/10(日) 20:21:46ドトネトはスレ違い
0181デフォルトの名無しさん
2006/12/10(日) 20:28:43>PlatformSDKとWindowsSDKは違う。
>Platform SDK + NET SDK = Windows SDK
そうですか。
0182デフォルトの名無しさん
2006/12/10(日) 20:30:58\nの代わりに\rを使うとそういう風になる環境は結構ある。
Windowsのコンソールもそうなっているはず。
0183デフォルトの名無しさん
2006/12/10(日) 20:43:25>\nの代わりに\rを使うとそういう風になる環境は結構ある。
これはその行の先頭へ復帰する、というだけだったと思いますが......
0184デフォルトの名無しさん
2006/12/10(日) 20:49:24いったん画面をクリアしたいんだろ
0185デフォルトの名無しさん
2006/12/10(日) 21:04:220186デフォルトの名無しさん
2006/12/10(日) 21:07:49えっ?
0187デフォルトの名無しさん
2006/12/11(月) 16:29:38例えば、ファイル名を決めていないのに上書き指示を受け取ったときとか。
0188デフォルトの名無しさん
2006/12/11(月) 16:53:25まとめて受け取り処理できる受け皿があるなら、普通に例外投げれば。
上記の例は例外対象じゃないだろ。
設計エラーな気すらする。
0189デフォルトの名無しさん
2006/12/11(月) 16:58:35名無しの場合も例外でもいいんじゃないかという気もする。
Windows でメニューに上書きコマンドを持つソフトなら、
メニューアイテムをグレイにしなきゃならんから事前にチェックする
ことになると思うけど。
0190デフォルトの名無しさん
2006/12/11(月) 17:03:26デタラメにハッシュとかで名前作ってみたらたまたま既に居て書込み禁止だったよとか、そんな状況?
0191デフォルトの名無しさん
2006/12/12(火) 03:00:240192デフォルトの名無しさん
2006/12/12(火) 18:39:09ostringsteam ret;
ret << "****************";
って感じで、文字列ストリームを宣言して、
テキストファイルを読み込んで、
内容を編集し、
文字列ストリームに出力します。
プログラムの最後で、
ofstream fout
と生成した出力オブジェクトfoutに
fout << ret.str();
という風に出力しているんですが、
なぜかある一定サイズ(28行くらい)を超えると、
ダイアログが出て
『問題が発生したため、****.exeを終了します。
ご不便をおかけして申し訳ありません』
と言われます。なぜでしょう?
0193デフォルトの名無しさん
2006/12/12(火) 19:01:09>なぜでしょう?
バグでしょう。
0194デフォルトの名無しさん
2006/12/12(火) 19:01:400195デフォルトの名無しさん
2006/12/16(土) 10:39:27同じくCのgetchに似ている関数ってありますか?
#include <iostream>
using namespace std;
int main()
{
int ich;
while( (ich = cin.get) != EOF ){
cout.put(ich);
}
}
0196デフォルトの名無しさん
2006/12/16(土) 11:05:57基本的にC++の入出力はCのそれと同じ機能を持っている。
ちょうどgetchar/(f)getcはstd::istream::getに対応している。
しかしgetchは標準でないので、C++に対応するものはない。
0197デフォルトの名無しさん
2006/12/16(土) 11:14:05回答感謝です。
そうですか。
わかりました。
0198デフォルトの名無しさん
2006/12/16(土) 14:18:46どうすればいいのでしょうか・・・・?
****=ファイル名
0199デフォルトの名無しさん
2006/12/16(土) 17:17:56日本語でどうぞ。
0200デフォルトの名無しさん
2006/12/17(日) 06:58:47ていうことは、
****
はstringですよね?
stringにファイル名を入れてそのファイルをreadするなら
○-----○-----○-----○-----○-----○-----○-----○-----
string ----- = "パス名"; ← ----は文字列 (末尾に、"\\")
---- += "ファイル名"
filein.open((----.c_str()), ios::in);
○-----○-----○-----○-----○-----○-----○-----○-----
でだめですか?
0201デフォルトの名無しさん
2006/12/17(日) 08:18:520202デフォルトの名無しさん
2006/12/17(日) 10:43:590203デフォルトの名無しさん
2006/12/17(日) 17:07:09どうしても2.35e+06と表示されるんですが、どうしたらいいでしょうか?
0204デフォルトの名無しさん
2006/12/17(日) 19:16:58Visual C++でC++を書いていたのですが、
どこかのショートカットキーを押してしまい、
スペースが・で表示されたり、
Tabが→(矢印)で表示されるようになってしまいました。
どうすれば元に戻せますか?
0205デフォルトの名無しさん
2006/12/17(日) 19:23:00(VCのエディタの設定が変わったのでしょうかね?[ツール]-[オプション]とか適当にいじってもダメですか)
私は設定にはあまり詳しいわけでないのでお答えできませんが、
VCのシリーズによって、微妙に設定方法って違うかもしれませんね。
(基本的には同じだと思いますが)
0206デフォルトの名無しさん
2006/12/17(日) 20:06:57double d = 2350000.;
std::cout << std::ios::fixed << d << std::endl;
0207デフォルトの名無しさん
2006/12/17(日) 20:11:20204です。
205さん、アドバイスありがとうございます。
[ツール]-[オプション]をいじってみたのですが、
今のところ元に戻りません…
0208デフォルトの名無しさん
2006/12/17(日) 20:23:25このへん
http://www.geocities.jp/cbc_vbnet/vc/console.html
04.マニピュレータ
0209デフォルトの名無しさん
2006/12/17(日) 22:37:19どうもありがとうございました。
問題は解決されました・・
0210デフォルトの名無しさん
2006/12/18(月) 00:02:30元にしたオブジェクトが死んだら使えなくなるの?
関数アダプタって、どう言う仕組みで実装できてるのだ?
0211デフォルトの名無しさん
2006/12/18(月) 00:06:56行列の固有値と固有ベクトルを求めるため、
ttp://www.neuro.sfc.keio.ac.jp/~masato/source/
このサイトにあるヘッダーファイルとリソースファイルを組み込み、マニュアルに示されているとおり、
#include <stdio.h>
#include "matrix.h"
void main(void)
{
Matrix A(2, 2), X;
Vector lamda;
A[0][0] = 3.0; A[0][1] = 2.2; // 行列 A 3.0 1.2
A[1][0] = 1.2; A[1][1] = 2.0; // 1.2 2.0
X = A.eigen(&lamda);
printf("\neigen value = ");
lamda.print();
printf("\neigen vector =\n");
X.print();
}
として、コンパイルしたところ、
1番目の引数を 'Vector *' から'Vector &'に変換できません。(新しい機能; ヘルプを参照)
というエラーが出ます。どうようにすればよいのかぜひ教えてください。
0212204
2006/12/18(月) 00:19:44(ctrl+R) + (ctrl+W) で元に戻りました。
205さん、ありがとうございました。
0213デフォルトの名無しさん
2006/12/18(月) 00:29:10ざっと見た感じ
X = A.eigen(&lamda)ではなくて
X = A.eigen(lamda);じゃないか?
(実際に確かめてないのであしからず)
0214デフォルトの名無しさん
2006/12/18(月) 00:34:59すでに試してみました。固有値は0が二つ、固有ベクトルは[0.5914,-0.8964]が二つ返され、うまくいきませんでした、
0215デフォルトの名無しさん
2006/12/18(月) 00:44:040216デフォルトの名無しさん
2006/12/18(月) 00:47:11#include <clocale>
setlocale(LC_CTYPE, "");
0217デフォルトの名無しさん
2006/12/18(月) 00:48:09一から全部教えてください
m(_ _)m
0218デフォルトの名無しさん
2006/12/18(月) 00:49:05読み込もうとするとどうなるの?
0219デフォルトの名無しさん
2006/12/18(月) 01:00:38すごい!解決したかもです。ありがとうございます
>>218
以下のチェックで必ず引っかかってましたが216さんので引っかからなくなりました
ifstream ifs(argv[1]);
if(!ifs)
return 1;
0220デフォルトの名無しさん
2006/12/18(月) 01:41:41そのままファイルに日本語書き込めるか?
ライブラリがバグッててどうしようもなかったと思うんだが。
0221デフォルトの名無しさん
2006/12/18(月) 01:49:29バグリました
引数の日本語は消え、変数内に日本語を使用するとそこで処理が止まりアプリが落ちる感じで…
振り出しに戻ったところでございます。よき方法があればご教授をTT
0222デフォルトの名無しさん
2006/12/18(月) 11:22:14SP1 が出てるから、試してみるといいかもしれない。
むしろ、試してみて報告たのむ。
0223デフォルトの名無しさん
2006/12/18(月) 17:13:39String str[] = {"aa", "bbb", "ccccc"};
のような配列の要素数を得るにはどうしたらいいのでしょうか。
0224デフォルトの名無しさん
2006/12/18(月) 17:23:020225デフォルトの名無しさん
2006/12/18(月) 17:24:04今は2.95.3を併用してctype.oでごまかしながら使ってます。
0226デフォルトの名無しさん
2006/12/18(月) 17:25:53<boost/range/size.hpp>をインクルードしてboost::size(str)という手もある。
0227デフォルトの名無しさん
2006/12/18(月) 18:00:06ありがとうございます。
>>224の方法で出来たのですが、それを少し変えて
const string a[] = {"aa", "bbb", "ccccc"};を
int function(const string str[]) const {
return (int)sizeof(str)/sizeof(str[0]);
}
のような関数でfunction(a);として要素数を出すようにしたら、
戻り値が0になってしまうのですが、なんででしょうか。
0228デフォルトの名無しさん
2006/12/18(月) 18:12:53引数として得た配列のサイズを得ることはできません(固定サイズの場合を除く)。
もし問題がなければ、std::vector などを使うのが良いと思います。
0229デフォルトの名無しさん
2006/12/18(月) 18:13:29std::size_t array_size(T (&)[N])
{
return N;
}
0230デフォルトの名無しさん
2006/12/18(月) 18:14:17templateで出来るだろ。
0231デフォルトの名無しさん
2006/12/18(月) 22:14:53仮引数でのTの配列型は、Tへのポインタ型へ変換される規則。
>>228
boost::sizeは、普通の引数として配列の引数を受け取るが。
(配列に対する部分特殊化は、正に229のようなことをやっている)
0232デフォルトの名無しさん
2006/12/18(月) 23:13:41function() {
const string a[] = {"aa", "bbb", "ccccc"};
array_size(a);
}
のようにした場合、上手くいくのですが、下のようにすると上手くいきません。
function2() {
const string a[] = {"aa", "bbb", "ccccc"};
function1();
}
function1(const string b[]) {
array_size(b);
}
VisualStudio .NET 2003環境で以下のようなエラーが出てしまいます。
「'size_t array_size(T (&)[N])' : 'T1 (&)[N] 用のテンプレート引数を
'const std::string []' から減少できませんでした。」
どこがまちがってるんでしょうか。
0233デフォルトの名無しさん
2006/12/18(月) 23:14:44windows.hがインクルードできません。
Cの知識はあるのですが、C++の知識はないです。
何が原因でしょう?
0234デフォルトの名無しさん
2006/12/18(月) 23:15:06function2() {
const string a[] = {"aa", "bbb", "ccccc"};
function1(a); // ←
}
0235233
2006/12/18(月) 23:23:270236デフォルトの名無しさん
2006/12/18(月) 23:25:20226/229の方法は、配列にしか使えず、ポインタには使えない。
配列型は引数に取れないが(>231)、配列への参照型は引数に取れる(配列へのポインタ型も可)。
というわけで次のようにすればいい。
template <typename Range>
void function1(Range& b) {
array_size(b);
}
0237デフォルトの名無しさん
2006/12/18(月) 23:51:46ありがとうございます。その方法で出来ました。
C++にはtemplateという便利なものがせっかくあるのに
使いこなせないというのはもったいないので、これから勉強し直そうと思います。
0238デフォルトの名無しさん
2006/12/19(火) 08:17:38分かりやすく教えてください、エロい人。
0239デフォルトの名無しさん
2006/12/19(火) 09:54:22判らない人は使わなくて宜しい。
ファイルストリーム系のfseek()使えば?
0240デフォルトの名無しさん
2006/12/19(火) 14:10:11六個の整数を配列に記憶して配列の中から最大値と最小値を出せって問題なのですが
これは配列に入っている数字をif文で総当りの式書かないとできないのでしょうか?
配列使って応用が効きそうだなとは思うのですがなかなかその先に考えがいけません。
何かヒントなどいただけないでしょうか?
0241デフォルトの名無しさん
2006/12/19(火) 14:16:430242デフォルトの名無しさん
2006/12/19(火) 14:17:24「ソート」とか、「ソート 配列」でググってみろ
0243デフォルトの名無しさん
2006/12/19(火) 14:18:51ヒントというか・・・
気に入ったTVが一番安く買える値段を探すときに、あなたならどうしますか?
探している途中、今まで見つけた中でいちばん安い値段をメモしておいたり・・・
0244デフォルトの名無しさん
2006/12/19(火) 15:09:01>243
すいません追記で
使っていいのはif文とfor文だけです。
0245デフォルトの名無しさん
2006/12/19(火) 15:14:45>>242-243に追記と言ってどうするw
ヒントをくれてるんだから自分でやれよ
ここは宿題スレではない
0246デフォルトの名無しさん
2006/12/19(火) 15:23:30はぁ?w
元からできるよw
ひとつだけ言わせてくれソ−ト使わないとこんな問題もできないんですか?wwwwww
入門スレだからどれくらいできるやついるか試しただけ、
だけどこんな初歩の問題もできないなんてwwwww
このスレの価値なし
0247デフォルトの名無しさん
2006/12/19(火) 15:27:06次の質問どうぞ。
0248デフォルトの名無しさん
2006/12/19(火) 16:36:55処理系定義の機能を使う必要がある。よって、環境が明示されて
いなければ答えようがない。
0249デフォルトの名無しさん
2006/12/19(火) 22:57:39どういう方法があるでしょうか。
0250デフォルトの名無しさん
2006/12/19(火) 23:00:550251デフォルトの名無しさん
2006/12/19(火) 23:02:06・他の機械(やプログラム)にデータを渡してソートしてもらう
・ユーザにデータを示してソートしてもらう
・並べ替えを一切せず、低い確率でのみ正常動作するという仕様で我慢してもらう
くらいしか思いつきません・・・
0252デフォルトの名無しさん
2006/12/19(火) 23:51:450253デフォルトの名無しさん
2006/12/20(水) 00:38:02今あるデータをソートするのではなく
最初から整列したデータを用意するんだ。
0254デフォルトの名無しさん
2006/12/20(水) 07:42:400255デフォルトの名無しさん
2006/12/20(水) 10:13:550256デフォルトの名無しさん
2006/12/20(水) 10:16:480257デフォルトの名無しさん
2006/12/20(水) 10:23:25なんで同じだと思うの?
0258デフォルトの名無しさん
2006/12/20(水) 13:25:00.open,.closeとfopen,fcloseの違いが分からない?
>>255それは無理矢理違いを探そうとするからだよ
逆に考えるんだ
「基本的に全く違うもので、どんな共通点を持つのか」
と考えるんだ
0259デフォルトの名無しさん
2006/12/20(水) 18:36:290260デフォルトの名無しさん
2006/12/20(水) 18:38:11お前いい加減うざい。
マルチしずぎ。
0261デフォルトの名無しさん
2006/12/20(水) 18:39:30○しすぎ
0262デフォルトの名無しさん
2006/12/20(水) 18:51:24文字列操作を行うプログラムなんですが、
data[256] = "abc,de f,,,,,, g";
char finder = ','; //検索用文字
をstrchr()とmemset()とmemcpy()を用いて
,をのぞいた文字列(abcde f g)を出力させたいのですが、どのように
すればいいかサッパリ…
どんな感じで組み立てればいいか教えてもらえませんか?
0263デフォルトの名無しさん
2006/12/20(水) 19:07:15strchr()とmemset()とmemcpy()を使わないで一文字ずつ辿るのが手軽だと思うよ
というかstrchr()とmemset()とmemcpy()を使わないといけない≒宿題なら別なところ行け
0264デフォルトの名無しさん
2006/12/20(水) 21:05:31というかVC++使っててC++スレに質問来るんだから
std::string使えよ…
0265デフォルトの名無しさん
2006/12/20(水) 21:50:21文字列処理でmemset()だとかmemcpy()なんか使うなよ。
0266デフォルトの名無しさん
2006/12/21(木) 01:24:45あとCならmemmoveを使った方がね
0267デフォルトの名無しさん
2006/12/21(木) 20:15:57なりますか?たとえて言うなら、大型自動車の免許を取れば普通自動車も運転でき
ちゃう、といった感じのイメージで捉えていいのかということです。C++を勉強すれば
Cも書けるようになるのかということです。
0268デフォルトの名無しさん
2006/12/21(木) 20:29:59できるけど、慣れないのでやや面倒かもしれないということはあるだろう。
0269デフォルトの名無しさん
2006/12/21(木) 20:31:120270デフォルトの名無しさん
2006/12/21(木) 20:44:490271デフォルトの名無しさん
2006/12/21(木) 20:53:560272デフォルトの名無しさん
2006/12/21(木) 21:07:50段階踏んでまずCやるほうがいいよ。
0273デフォルトの名無しさん
2006/12/21(木) 21:10:080274デフォルトの名無しさん
2006/12/21(木) 21:57:490275デフォルトの名無しさん
2006/12/21(木) 22:32:560276デフォルトの名無しさん
2006/12/21(木) 22:38:090277デフォルトの名無しさん
2006/12/21(木) 23:42:460278デフォルトの名無しさん
2006/12/21(木) 23:48:39C++やったらCの知識は要らないんだよね
式にするとC++ - C = C+ みたいに…
0279デフォルトの名無しさん
2006/12/22(金) 00:11:130280デフォルトの名無しさん
2006/12/22(金) 00:13:070281デフォルトの名無しさん
2006/12/22(金) 00:31:330282デフォルトの名無しさん
2006/12/22(金) 00:32:190283デフォルトの名無しさん
2006/12/22(金) 00:49:30C99の新機能は勉強しておいて損はないと思う。
0284デフォルトの名無しさん
2006/12/22(金) 00:56:220285デフォルトの名無しさん
2006/12/22(金) 01:04:520286デフォルトの名無しさん
2006/12/22(金) 01:15:56ヒープを使わない点もパフォーマンス狙いのときには利用価値がある。
0287デフォルトの名無しさん
2006/12/22(金) 01:21:25可変長配列で使うメモリはどこから取ってくるの?
0288デフォルトの名無しさん
2006/12/22(金) 01:25:020289デフォルトの名無しさん
2006/12/22(金) 01:25:350290デフォルトの名無しさん
2006/12/22(金) 01:41:47C99でいう可変長配列は実行時にサイズを決定できる配列のことか。
サイズを動的に変更可能な配列という意味ではないんだね。
それならヒープでなくスタックに領域を取れるね。
0291デフォルトの名無しさん
2006/12/22(金) 04:33:260292デフォルトの名無しさん
2006/12/22(金) 07:58:45下記のように宣言されてる関数を使いたいのですが
呼び出すとアクセス違反でエラーになってしまいます。
long WINAPI Reset( long Port, long *Sts );
こんな感じで呼び出しています
-----
long *sts;
Reset(1, sts);
----
たぶん第2引数のstsの渡し方が原因と思うのですが、ポインタ関連を理解してないからですかね?
0293デフォルトの名無しさん
2006/12/22(金) 08:16:28Resetがどんな動作かによる
Stsに何かを返すのなら
long sts;
Reset(1, &sts);
0294292
2006/12/22(金) 09:57:53stsはステータスを返すようになってます。
ご指摘のとおりにコーディングしなおしたら無事動きました。
自分のは入れ物を用意してなかったからエラーになったんですね。
ありがとうございました。
あと、もう一つ質問させてください。
このReset()の仕様書をみるとstsに返される値(ステータスワード)の一覧が
こんな感じになっています。
SW1 SW2
E1 00 正常終了
E1 01 エラー
E2 10 待機中
stsはlong型なのでSW1(2バイト)とSW2(2バイト)ということになるのですか?
また、stsからSW1とSW2を切り分けるのはどうすればいいのでしょうか?
本来この関数作った人に聞くべきなんでしょうが、推測でもいいのでよろしくお願いします。
0295デフォルトの名無しさん
2006/12/22(金) 10:13:04上位バイトと下位バイトに分けるんなら
short sw1 = sts&0xFFFF;
short sw2 = (sts>>16)&0xFFFF;
SW1と2でどちらが上位か分からないから逆かもしれん
仕様書とか言ってるってことは仕事?
もしそうならCの基礎も急いで勉強した方がいいような…
0297デフォルトの名無しさん
2006/12/22(金) 13:05:560298デフォルトの名無しさん
2006/12/22(金) 19:58:28class m_stack : public stack {
private:
const unsigned int stack_size;
public:
m_stack(const unsigned int size) : stack(size), stack_size(size) { }
}
これで最後の行のm_stack()はclass stackのコンストラクタを
実行し、次にstack_size()を実行するということですか?
どうして{ }の中に記述しないのですか。よろしくお願いします。
0299デフォルトの名無しさん
2006/12/22(金) 20:04:08>実行し、次にstack_size()を実行するということですか?
その通り
>どうして{ }の中に記述しないのですか
初期化と代入の違い
0300デフォルトの名無しさん
2006/12/22(金) 20:04:570301デフォルトの名無しさん
2006/12/22(金) 21:59:51演算子のオーバーロードで、インクリメント演算子を
前置と後置用でそれぞれ定義した場合、クラスのメンバにそれぞれインクリメントするようにしたんだけど、
A A::operator ++(){
this->x++;
this->y++;
return *this;
}
A A::operator ++(int nouse){
this->x++;
this->y++;
return *this;
}
例えばob2(1,1)の場合,ob1 = ++ob2;とすると、結果ob1(2,2),ob2(2,2)になるのですが、
ob1 = ob2++;この場合、後置だからob1(1,1),ob2(2,2)の結果にするにはどのようにすればいいですか?
上記だと後置のオーバーロードでもob2++が評価されてから、ob1に代入されてしまいますし・・。
0302デフォルトの名無しさん
2006/12/22(金) 22:10:09コピーを作ってそいつをインクリメントすればよい。
A A::operator ++(int) {
A temp(*this);
return ++temp;
}
0303デフォルトの名無しさん
2006/12/22(金) 22:11:26前置インクリメントは、戻り値の型をAへの参照型にした上で*thisを返すようにすべき。
0304デフォルトの名無しさん
2006/12/22(金) 22:18:41これでいいの?
A A::operator ++(int) {
A temp(*this);
this->x++;
this->y++;
return temp;
}
じゃないかな?と思ったんだけど
0305301
2006/12/22(金) 22:29:53ご返信ありがとうございました。
コピーを作成するのは思いつきませんでした。
>>304
ありがとうございます。無事解決しました。
お二人とも感謝です^^。
0306デフォルトの名無しさん
2006/12/23(土) 00:16:06グハッ、何寝ぼけたことを書いたんだろう俺_| ̄|○
でもさ、こうで良くないか。
A A::operator ++(int) {
A temp(*this);
++*this;
return temp;
}
0307デフォルトの名無しさん
2006/12/23(土) 00:26:25それも考えたんだけど
なんか後置式の中に前置式を入れるのヤダったから
変数も2つだけだし
でも拡張性とか考えれば>>306がいいんだろうけどね
あとは>>301の好み次第かな
0308デフォルトの名無しさん
2006/12/23(土) 01:00:400309デフォルトの名無しさん
2006/12/23(土) 14:54:36stack_size は変数だから、実行するのはおかしいだろ。
stack_size(size) は m_stack のメンバ stack_size を size で初期化している。
0310デフォルトの名無しさん
2006/12/24(日) 00:12:47virtual Foo& operator=(const Foo& foo); ???
0311デフォルトの名無しさん
2006/12/24(日) 00:30:24同じなんじゃねーの?
0312デフォルトの名無しさん
2006/12/24(日) 00:42:27#include <iostream>
using namespace std;
class Base {
public:
virtual Base& operator=(const Base& base) {
cout << "Base" << endl;
return *this;
}
};
class Sub : public Base {
public:
virtual Base& operator=(const Base& base) {
cout << "Sub" << endl;
return *this;
}
};
void func(Base& base) {
Base a;
base = a;
}
int main() {
func(Base());
func(Sub());
return 0;
}
0313デフォルトの名無しさん
2006/12/24(日) 02:13:14基底クラスのoperator =を隠すことを言いたいのだと思う。
0314デフォルトの名無しさん
2006/12/24(日) 05:47:25たとえば、1つのスレッドで何箇所からも同時にダウンロードする とか
ご教授願います
0315デフォルトの名無しさん
2006/12/24(日) 08:40:32http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
ここでも見ておけ。
0316デフォルトの名無しさん
2006/12/24(日) 17:50:150317デフォルトの名無しさん
2006/12/24(日) 18:19:34Cを基にしており、Cと互換な部分が多いことも売りの1つ。
その一方で、オブジェクト指向プログラミングやジェネリックプログラミングなど比較的最近の
プログラミングパラダイムを取り入れたマルチパラダイムな言語になっている。
こんな感じでいいか?
0318デフォルトの名無しさん
2006/12/24(日) 19:47:48CとC++ってどちらを選んでよいのかわからないのですが、
どのように選んだらよいでしょうか。
0319デフォルトの名無しさん
2006/12/24(日) 20:01:49やっても負け組み決定。
良くて半可通じゃね??
0320デフォルトの名無しさん
2006/12/24(日) 20:26:48なんで?
0321デフォルトの名無しさん
2006/12/24(日) 20:35:0612月24日に2ちゃんねるやってるあなたも負け組みなんでしょ?
0322デフォルトの名無しさん
2006/12/24(日) 20:35:58今からパーティ行かなきゃならんのでレスできませんよ。
0323デフォルトの名無しさん
2006/12/24(日) 20:40:56妄想御疲れ様です。
0324デフォルトの名無しさん
2006/12/24(日) 20:49:550325デフォルトの名無しさん
2006/12/24(日) 23:28:160326デフォルトの名無しさん
2006/12/26(火) 15:08:24Mr.BATERや!
0327デフォルトの名無しさん
2006/12/29(金) 20:34:21iostream系とstdio系を混ぜないようにとはよく言われるのですが、
C++でstdioではなくiostreamを使用する積極的な理由とはなんでしょうか?
別に積極的とは言わないまでも、こういう理由からstdioではなくて
iostreamが必要という回答があれば教えてください。
0328デフォルトの名無しさん
2006/12/29(金) 20:36:24printf()だとクラスの入出力が面倒くさい、あるいはできない。
ストリームなら、多重定義によってコンパイル時に自動判別
してくれるのでとても助かる。
逆に組み込み型の入出力しかしないなら、printf()とscanf()だけの
方がいいと思う。現時点では。
0329デフォルトの名無しさん
2006/12/29(金) 20:48:51「あっち側」もiostreamでは自由度が高い。
ストリームバッファクラスを書けば、
ファイルやメモリに限らずどんなものに対しても入出力できるようになる。
0330デフォルトの名無しさん
2006/12/29(金) 20:54:11方向キーでいずれか(1つ)の項目を選択させ、
選択された項目を下のように括弧( [ と ] )で囲みたいです。
※ 画面に表示される項目はvectorになっており(vector<string>)、
pop_backすることで、項目の数は、変動します。
全通りのパターンを書く以外に何かいい方法があれば教えてください!!
例) 項目数が9で[メニュー4]を選択した場合の表示
メニュー1 メニュー2
メニュー3 [メニュー4]
メニュー5 メニュー6
メニュー7 メニュー8
メニュー1 メニュー2
メニュー9
(横2列で表示)
0331デフォルトの名無しさん
2006/12/29(金) 21:18:09typedef std::vector<std::string> MenuItem;
void ShowMenu(MenuItem item, MenuItem::size_type selected)
{
& using std::cout;
& for (MenuItem::size_type i = 0; i < menuItem.size(); ++i)
& {
& & if (i == selected)
& & & cout << '[';
& & cout << item[i];
& & if (i == selected)
& & & cout << ']';
& & cout << (i & 1 ? '\t' : '\n');
& }
}
0332デフォルトの名無しさん
2006/12/29(金) 21:30:08>率直に考えたらこうなったが問題あるか?ただしコンパイル・実行は全く行っていない、悪しからず。
いいえ。問題なんてとんでもない。利用させていただきます。
ありがとうございました。
0333デフォルトの名無しさん
2006/12/30(土) 01:48:34規格化はしないの?
0334デフォルトの名無しさん
2006/12/30(土) 01:50:01C++の設計と進化を読め。
0335デフォルトの名無しさん
2006/12/30(土) 02:07:57の定義をヘッダでするとリンクエラー吐くのは何故?in .net2003
cppファイル内なら通るんだけど
0336デフォルトの名無しさん
2006/12/30(土) 02:19:06俺のエスパー値が低くてわからないので、
症状が再現する最小限のコードを晒してくれ。
0337327
2006/12/30(土) 07:15:46>329
必要な局面があるという事がわかって安心しました。
C++の勉強中ですが、iostream系もサボらずに覚えようと思います。
0338デフォルトの名無しさん
2006/12/30(土) 09:33:18スレッドは提案が出ていたと思う。
>>335
inline付ければ平気。
インラインでない(かつテンプレートでない)関数をヘッダで定義すると、
それをインクルードした全てのcppファイル(そしてそれをコンパイルしたobjファイル)にその関数の定義が含まれてしまう。
するとリンク時に同一名のシンボルが複数見付かったというエラーになる。
そもそもその関数を定義するのはなぜ?自分で書かなくても(std::istreamのメンバとして)標準ライブラリにあるだろうに。
0339デフォルトの名無しさん
2006/12/30(土) 12:47:06問題なく読み込めるのですが、少しでもファイルの内容に変更を加えるだけで
error C2146: 構文エラー : ';' が、識別子 'lpDD' の前に必要です。
error C2501: 'LPDIRECTDRAW7' : 識別名を宣言するのに、型が指定されていません。
というエラーが出て、自家用PCでのVisualC++での開発が頓挫しております。
この場合、どうすればこの構文エラーがなくなってくれるのでしょうか・・・
0340デフォルトの名無しさん
2006/12/30(土) 15:23:14{
int*p;
if(1)
{
int x; = 3;
p = &x;
}
printf("%d", *p);
}
xがスコープから外れてるので使えないと思ったのですが
vc2003だと 3 と出力されました。
これの出力はどのコンパイラでも 3 になりますか?
それとも実装や状況に依存しますか?
0341デフォルトの名無しさん
2006/12/30(土) 15:27:23LPDIRECTDRAW7 が宣言されているヘッダをインクルードすればいいんじゃない?
0342デフォルトの名無しさん
2006/12/30(土) 15:28:04未定義動作。
0343デフォルトの名無しさん
2006/12/30(土) 15:30:32激しくさんくすこでつ!!
0344デフォルトの名無しさん
2006/12/30(土) 15:32:44線の先が▲だったり、■だったりするのがよくわかりません
0345デフォルトの名無しさん
2006/12/30(土) 17:34:21C++の場合は一般的にどうするべきなのでしょうか。
複数クラスを機能別にソースファイルに分けるべきなのでしょうか、
それともJavaのように一つずつクラス毎で分けたほうが良いのでしょうか。
0346デフォルトの名無しさん
2006/12/30(土) 20:14:48わかりやすい説明ありがとう
いや楽がしたくて
int a, b;
cin >> "(" >> a >> "," >> b >> ")";
みたいに出力と対称に入力出来るようにしてみた。
あと>>336もありがとう
0347デフォルトの名無しさん
2006/12/30(土) 20:41:04そんなことありません。
0348デフォルトの名無しさん
2006/12/30(土) 23:11:150349デフォルトの名無しさん
2007/01/01(月) 02:52:07バカ。
そんなことある。
0350デフォルトの名無しさん
2007/01/01(月) 04:10:31分けるべきだな
ひとつの関数でも分ける
プログラミングの苦痛は、大きいクラスでも
大きい関数でもなく、大きなファイルから来る。
これは少し冗談だがBoostでも見ればだいたいこれくらいで
分けたらいいというのは分かるぞ
0351デフォルトの名無しさん
2007/01/01(月) 04:58:170352デフォルトの名無しさん
2007/01/01(月) 09:18:500353デフォルトの名無しさん
2007/01/02(火) 20:59:07↓のようなウォーニングが出ます。動作事態は問題ないのですが、
出さないようにする方法を教えてください。
d:\rankpro\addmatchresult.cpp(43) : warning C4996: 'getch' が古い形式として宣言されました。
0354デフォルトの名無しさん
2007/01/02(火) 21:02:300355デフォルトの名無しさん
2007/01/02(火) 21:02:54#pragma warning(disable:4996)
0356デフォルトの名無しさん
2007/01/02(火) 21:49:01出来ました。
どうも、ありがとうございました。
0357デフォルトの名無しさん
2007/01/03(水) 23:15:07class Integer {
const int i; // ここのconstが問題
public:
Integer(int i) : i(i) { }
};
int main()
{
std::vector<Integer> vec_int;
vec_int.push_back(Integer(1));
}
なぜこのコードがコンパイルできないのか理解できません。
4行目のconstがなければ通るんですけど。。。。
コンパイラはGCC3.2.3です。
0358デフォルトの名無しさん
2007/01/03(水) 23:47:05自分で書いてないから暗黙の代入演算子がコンパイラによって作られる。
暗黙の代入演算子がconstメンバ変数に代入しようとしてアウト。
0359デフォルトの名無しさん
2007/01/04(木) 02:30:000360デフォルトの名無しさん
2007/01/04(木) 04:23:38その部分以外は正しいけどね。
0361デフォルトの名無しさん
2007/01/04(木) 09:34:48vector の push_back() ならコピーコンストラクタだけで
実装できそうだな。エラーメッセージは?
0362デフォルトの名無しさん
2007/01/04(木) 10:06:322003 版の規格の 23.1 p3 によると、コンテナ全般での要素型への要求として
CopyConstructible と Assignable が両方必要になってる。
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#276
これでコンテナ全般では Assignable を必要としなくなったけど、
vector では別途 Assignable が明記されたので vector に限れば
同じこと。
0363デフォルトの名無しさん
2007/01/04(木) 10:27:44暗黙で定義されるのはコピー代入演算子
>>360
規格23.1.3
コンテナに格納されるオブジェクトの型はCopyConstructibleかつAssignable
0364357
2007/01/04(木) 11:35:59エラーメッセージはこんな感じです。
コピー代入演算子でエラーが出ているようです。
また、push_back()をしなければエラーは出ません。
/usr/include/c++/3.2.3/bits/stl_vector.h: member function 内の
`Integer& Integer::operator=(const Integer&)':
/usr/include/c++/3.2.3/bits/stl_vector.h:895:
`void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<_Tp*, std::vector<_Tp, _Alloc> >,
const _Tp&) [with _Tp = Integer, _Alloc = std::allocator<Integer>]' から実体化されました
/usr/include/c++/3.2.3/bits/stl_vector.h:498: `void std::vector<_Tp, _Alloc>::push_back(const _Tp&)
[with _Tp = Integer, _Alloc = std::allocator<Integer>]' から実体化されました
const_member.cpp:12: ここで実体化されました
/usr/include/c++/3.2.3/bits/stl_vector.h:895: non-static const member `const int Integer::i', can't use default assignment operator
メンバ変数をconstにするのは、関係のある複数の変数をひとまとめにするためだけに
クラスを使いたいからです。
Cの構造体にコンストラクタをくっつけるだけみたいな。
だから最初に載せたコードのInteger::iは本当はpublicメンバです。
やりたいことをスマートに実装する方法はないものでしょうか。
あえてメンバをconstにしなくても困らないっちゃあ困らないんですが。
0365デフォルトの名無しさん
2007/01/04(木) 11:46:37じゃあconst取れヴォケ。
0366デフォルトの名無しさん
2007/01/05(金) 23:54:09インスタンスをconstで宣言して代入じゃ問題が?
0367デフォルトの名無しさん
2007/01/07(日) 16:38:310368デフォルトの名無しさん
2007/01/07(日) 17:09:34実質的に継承関係になっているような継承のこと。
0369デフォルトの名無しさん
2007/01/07(日) 22:02:52必ず継承して実体化できるようにしてね(はぁと)
0370デフォルトの名無しさん
2007/01/07(日) 23:26:58クラスのインスタンスにクラス情報でも勝手に組み込まれて、
グローバル領域にクラス相関図情報みたいのが勝手に作られてるのか?
0371デフォルトの名無しさん
2007/01/07(日) 23:41:26もっともらしく嘘を教えていただきまして
ありがとうございます
0372357
2007/01/08(月) 00:00:36手元にある本には、処理系によって異なりうるが、仮想関数テーブルのなかに
型情報を収めたテーブルへのポインタが格納されると書いてある。
だからdynamic_castは多相型(仮想関数をひとつ以上持つクラス)の
オブジェクトにしか適用できないらしい。
0373デフォルトの名無しさん
2007/01/08(月) 00:02:15ちなみにオブジェクトと言ってもポインタかリファレンスね。
0374デフォルトの名無しさん
2007/01/08(月) 00:27:44{
public:
int n;
};
//仮想継承
class D1 : public virtual Base { /* 〜 */ };
class D2 : public virtual Base { /* 〜 */ };
class Derivation : public D1, public D2 { /* 〜 */ };
この例のような状態は特に菱形継承(ダイアモンド継承)と呼ばれる。
仮想継承でない(D1, D2の部分のvirtualを取り除く)場合、DerivationのインスタンスにはD1の基底のBaseのnとD2の基底のBaseのnという2つのnが別に存在することになる
(メンバ関数も同様)。仮想継承した場合、 DerivationのインスタンスにはBaseの部分はただ1つしか存在しない。D1の基底とD2の基底が共有されている状態である。
C++ではクラスの多重継承・仮想継承が共に使用できる。しかしC++を基にしているJava、C#、Dではいずれも使用できない。
0375デフォルトの名無しさん
2007/01/08(月) 01:42:50ありがとうございました。
よく分かりました
0376デフォルトの名無しさん
2007/01/08(月) 01:49:33vector<int>::iterator iter;
int tmp;
cout << "項目を入力:" << endl;
while (cin >> tmp)
vec1.push_back(tmp);
cout << "表示方法を数字で選択:" << endl;
cout << "\t1\40入力順" << endl;
cout << "\t2\40逆" << endl;
int choise;
cin >> choise; ※
cout << choise << endl;
switch(choise){
(以下省略)
上のソースで※の行のcinが無視されてしまいます。
だから例えば※の1行上で int choise = 0; 等とすると最後までchoiseは0のままです。
入力できるはずのところで入力できません。どうしてでしょうか?
0377デフォルトの名無しさん
2007/01/08(月) 02:00:40vec1.push_back(tmp);
をどうやって抜けてる?
0378デフォルトの名無しさん
2007/01/08(月) 02:06:50Ctrl+Z です
0379デフォルトの名無しさん
2007/01/08(月) 02:14:18cin.clear()してみ。
0380376
2007/01/08(月) 03:10:27できました。ありがとうございます。
Ctrl-Z が failbit フラグをonにするということですか?検索してみましたがよくわかりません。
0381デフォルトの名無しさん
2007/01/08(月) 03:25:19正しくは、cinがEOFを検出した事でstd::ios::eofbitが立つが、
std::ios::eofbitが立つ時は必ずstd::ios::failbitも立つ。
failbitが立ってしまうとそのストリームに対する操作はclear()と
close()以外は無効になる。
0382デフォルトの名無しさん
2007/01/08(月) 07:59:33あほな当て字をするからまともに答えてもらえないんだよ。
おれも仮○包茎の説明をしよかと思って思いとどまった。
0383デフォルトの名無しさん
2007/01/08(月) 10:14:020384デフォルトの名無しさん
2007/01/09(火) 01:49:22お願いします。
0385デフォルトの名無しさん
2007/01/09(火) 01:52:54sprintf
snprintf
stringstream
strstream
boost::lexical_cast
でググって、好きな方法を選べ
0386デフォルトの名無しさん
2007/01/09(火) 01:56:10ありがとうございます。
それ以外のにします。
0389デフォルトの名無しさん
2007/01/10(水) 22:19:380390デフォルトの名無しさん
2007/01/10(水) 22:44:47ダイアモンド継承なら知ってるけど。
0391デフォルトの名無しさん
2007/01/14(日) 21:12:300392デフォルトの名無しさん
2007/01/15(月) 11:07:490393デフォルトの名無しさん
2007/01/15(月) 12:23:15型名というか名前は実装依存だが。
int n[1][2][3];
std::cout << typeid(n).name() << std::endl;
0394デフォルトの名無しさん
2007/01/15(月) 22:30:57UINT max;
UINT foo;
if(1 < foo < max)
{
処理
}
このように書くと、
warning C4804: '<' : 演算中の 'bool' 型の使用方法が安全ではありません
warning C4018: '<' : signed と unsigned の数値を比較しようとしました。
こんなときはどうしたらいいですか?
1にUINTの1だ〜と宣言させればよいかと思い
UINT 1なんて書いたら、コンパイラに馬鹿にされました
int 1と書いたらそんなものを付けるなともっと馬鹿にサレマスタ
VS2005
SDKデツ
0395デフォルトの名無しさん
2007/01/15(月) 22:46:030396デフォルトの名無しさん
2007/01/15(月) 22:55:35394です
サンクス、馬鹿にされなくされなくなりましたが
foo && foo
でなんで直ったのか、もっと分からなくナリマスタ
解説してもらえませんか
0397デフォルトの名無しさん
2007/01/15(月) 22:59:07悪い事は言わん
1から勉強やり直せ
0398デフォルトの名無しさん
2007/01/15(月) 23:02:09じゃなくて
(1 < foo) && (foo < max)
と捉えろ
0399デフォルトの名無しさん
2007/01/15(月) 23:43:30>>398サンクス良く分かりマスタ
が、1にプレフィックスを付ける方法とかは無いのですか?
0400デフォルトの名無しさん
2007/01/15(月) 23:46:010401デフォルトの名無しさん
2007/01/15(月) 23:56:18ちょww、お前ソレいま教えるなよ、こいつなんか勘違いしたまま先に進んじゃうぞw
0402デフォルトの名無しさん
2007/01/15(月) 23:59:191uだとやっぱり、
warning C4804: '<' : 演算中の 'bool' 型の使用方法が安全ではありません
warning C4018: '<' : signed と unsigned の数値を比較しようとしました。
これが出るんだよね・・・・
0403デフォルトの名無しさん
2007/01/16(火) 16:26:11・計算式を文字列として入力すると、その計算を行い、結果を出力するプログラムを
作成せよ。
-入力文字列を解析し、数値と演算子に分けて計算する。
-例:計算する式を入力してください。終了:end
使用可能演算子:四則演算(+-*/)
1+2
答えは3です。
・必ず四則演算のほかに、使用可能な演算子を追加せよ。
入力する際の演算子記号は任意にきめてよい。
-例:あまりを求める %
二乗を求める
・繰り返し何度も計算できるようにする。
0404デフォルトの名無しさん
2007/01/16(火) 16:29:03つ http://pc10.2ch.net/test/read.cgi/tech/1168663908/
0405デフォルトの名無しさん
2007/01/16(火) 17:34:56あとは>>404のスレで
0406デフォルトの名無しさん
2007/01/16(火) 20:37:52class A
{
public:
A(int a);
};
このクラス定義に対して
A *ADim=new A[100]; //初期化がないと言って怒られます
よろしくお願いします
0407デフォルトの名無しさん
2007/01/16(火) 20:45:580408デフォルトの名無しさん
2007/01/16(火) 21:47:56どう初期化したいの?
0409406
2007/01/17(水) 00:08:00A a(0);
あるいは
A *a=new A(0);
でインスタンスが生成できますが
これを100個配列として生成する記述の仕方がわかりません。
よろしくお願いします
0410デフォルトの名無しさん
2007/01/17(水) 08:09:530411デフォルトの名無しさん
2007/01/17(水) 11:08:00#include <memory>
A *ADim = (A*)std::malloc(sizeof(A) * 100);
std::uninitialized_fill_n(ADim, 100, A(1234));
別々の初期値が要るならraw_storage_iteratorで。
0412デフォルトの名無しさん
2007/01/17(水) 11:18:160413デフォルトの名無しさん
2007/01/17(水) 13:53:28A(0) を100個でいいなら
std::vector<A> ADim(100, A(0));
0414デフォルトの名無しさん
2007/01/17(水) 19:12:42using namespace std;
int main(void)
{
unsigned char x,y;
cout << "2つの値を入力してください。\n";
cin >> x >> y;
x -= '0';
y -= '0';
int a = x + y;
int b = x * y;
printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b);
return 0;
}
これで出力したら10以上の数値が出ないんですが、
どうしたら出るようになるか教えてください。
0415デフォルトの名無しさん
2007/01/17(水) 19:16:51xとyをint型か何かにする。
なんだかんだいって(signed/unsigned) charは文字を扱うためのもの。
0416デフォルトの名無しさん
2007/01/17(水) 19:20:00宿題で『unsigned char』と『printf』ははずせないんです…。
0417デフォルトの名無しさん
2007/01/17(水) 19:26:410418デフォルトの名無しさん
2007/01/17(水) 19:31:54正直、気持ち悪すぎ
0419デフォルトの名無しさん
2007/01/17(水) 19:32:22atoiってchar以外で使えたっけ
0420デフォルトの名無しさん
2007/01/17(水) 20:22:22(あったけどうわべのだけ理解していた)のですが、Win32APIを弄りだしたら
物凄くクラスを使うと便利ということが分かったばかりの初心者です。
privateで宣言した
TCHAR *buffer[512];
というコンストラクタをデクストラクタする時に
foo::~fooSet()
{
delete buff;
}
とすると、警告が出るのですが使い方間違ってますかというより、privateな変数は
デクストラクタしなくてもいいのでしょうか?
warning C4156: 'delete' の配列でない形式を使った配列の削除は、定義されていません。
warning C4154: 配列の delete が定義されていません。配列は、ポインタに変換されます。
VS2005
SDK
0421デフォルトの名無しさん
2007/01/17(水) 20:29:22delete するなら buffer[0] とかだ
0422デフォルトの名無しさん
2007/01/17(水) 20:31:16スマソなれない言葉なんで(^^;
×デクストラクタ
○デストラクタ
です、よろしく
0423デフォルトの名無しさん
2007/01/17(水) 20:33:48サンクス
>>buffer は配列であって new で確保したものじゃないだろ?
そうです
buffer[0]したら警告が止んだ、これでいいのか、なるほど。
0424デフォルトの名無しさん
2007/01/17(水) 20:38:10newしてないものをdeleteしちゃダメ。
0425デフォルトの名無しさん
2007/01/17(水) 20:45:04サンクス
>>423だす
ていうかnewしてなかったら、deleteしなくてもいいの?
0426デフォルトの名無しさん
2007/01/17(水) 20:49:16何も知らないという事は恐ろしい
0427デフォルトの名無しさん
2007/01/17(水) 21:19:33処でクラスって楽しいですね、これからは全てクラス化しようと
決心シマスタ
0428デフォルトの名無しさん
2007/01/17(水) 21:22:51> TCHAR *buffer[512];
> というコンストラクタを
それコンストラクタじゃなくてメンバ変数だよ、多分
あと、デストラクタするってのも普通言わない
0429デフォルトの名無しさん
2007/01/17(水) 21:49:29なるほど、拙者承知した
処で、兄者はC++使いのつわものと拝見したが、Win32APIの関数もクラス化して
ライブラリィとか作ったりしたこともあると思うのだが、どんなものを作ったのか
教えてくれまいか、コードを書いてくれとは言わないが、これは便利だった役にたった
という物があったら教えてくれましか。
ATLとかvectorとか見たら目眩がするのでいっそ自分で作ったほうがましかと思う次第であるのでヨロシク
0430デフォルトの名無しさん
2007/01/17(水) 22:00:23自分で作っても劣化版になるだけ。車輪の再発明と言う。
だいたい曲がりなりにも金を取ることもある製品なんだから作っているのはそれなりのプロだ、自分よりスキルがないわけがない。
0431デフォルトの名無しさん
2007/01/17(水) 22:03:160432デフォルトの名無しさん
2007/01/17(水) 22:46:46作者が自分の技術に心酔して一般には使いにくい塵を売りつけたおぞましい物にみえますが・・・・・
0433428
2007/01/17(水) 23:14:41何で用語の間違い指摘しただけでそんな認定受けなきゃならんのだ
質問するとき用語が間違っているとトラブルになりやすいからわざわざ指摘したんだが…
覚えたてなら用語を間違って覚えてる場合もあるだろ
あとオレはそんなにC++が得意なわけじゃないから
APIのラッパークラスも書いた事無いよ
書く予定も無い
まあ、使い捨てなものとか勉強目的のはあったと思うが、
少なくとも使い回せるようなのは一つも
今のオレが書けないような汎用性の高いライブラリが色んなサイトで公開されてるし
0434デフォルトの名無しさん
2007/01/17(水) 23:26:44それよりもっと使いにくいものなんて世の中ごまんとある。
ところで、ATLはATL::CHandleなんかの小物が便利だよ。
0435デフォルトの名無しさん
2007/01/17(水) 23:30:55コピーコンストラクタがあるとも限らないから、>>411が良いんじゃないだろうか。
0436デフォルトの名無しさん
2007/01/18(木) 04:40:26>>411 でもコピーコンストラクタは必要なわけだが。
0437デフォルトの名無しさん
2007/01/18(木) 18:01:19コピーコンストラクタが無い場合には自前で placement new で初期化する必要アリか・・・
0438デフォルトの名無しさん
2007/01/18(木) 20:37:54ならコピーコンストラクタは要らないんじゃね?
0439デフォルトの名無しさん
2007/01/18(木) 21:23:210440デフォルトの名無しさん
2007/01/20(土) 10:12:19C++ではデフォルトコンストラクタが無いクラスの配列は
基本的には無理とするのがベター。
0441デフォルトの名無しさん
2007/01/20(土) 16:05:24独自拡張の出力ストリームを以下のように作成しました。(一部省略)
// 拡張ストリームバッファ
class streambuf2
: public std::basic_streambuf< wchar_t, std::char_traits< wchar_t > >
{
public:
// 必要最低限の仮想関数をオーバーライド
}
// 拡張ostream
class ostream2
: public std::basic_ostream< wchar_t, std::char_traits< wchar_t, > >
{
private:
streambuf2 m_sb2;
public:
ostream2()
: std::basic_ostream< wchar_t, std::char_traits< wchar_t, > >( &m_sb2 )
{
}
// 特にオーバーライド無し
}
つづく
0442441
2007/01/20(土) 16:11:48以下のように文字列を出力すると、入力文字列のポインタがうまく判別されず(?)、
文字列のoperatorとは違う関数がよばれ、文字列のアドレスが数字で表示されてしまいます。
ostream2 cout2;
cout2 << L"TestString";
出力結果:00,524,1F0
どうしてこのような現象になってしまうのでしょうか?
原因がわからず困っています。
なお、以下のように二回同じ文字列を出力した場合、二回目は正しく文字列として出力されます。
ostream2 cout2;
cout2 << L"TestString";
cout2 << L"TestString";
出力結果:00,524,1F0 TestString
また、初回をbasic_stringでわたしてやった場合は以後普通に動作するようです。
ostream2 cout2;
cout2 << basic_string< wchar_t >("TestString");
cout2 << L"TestString";
出力結果:TestString TestString
同じ値をそのまま二回渡して呼ばれるoperator関数が、変わる事ってありえるのでしょうか???
0443デフォルトの名無しさん
2007/01/20(土) 19:38:14プロジェクトのプロパティ→C/C++→言語→wchar_tをビルトイン型として扱う
0444441
2007/01/21(日) 02:24:08切り替えても変化がありませんでした。
なお、同一ソースをlinuxに持っていって実行した所、
上記の問題は発生しませんでした。
もしかしたらVS2003のバグなんだろうか・・・一応SPは当ててあるのですがorz
別の場所でなにかしらのメモリを上書きしてしまっている可能性とかもありえるのかな・・・
0445デフォルトの名無しさん
2007/01/21(日) 09:35:520446デフォルトの名無しさん
2007/01/24(水) 19:28:500447デフォルトの名無しさん
2007/01/25(木) 15:04:17少なくとも私の使ってるGCCでは違いました。ショック!
0448デフォルトの名無しさん
2007/01/25(木) 15:57:35マルチスレッド/マルチコア/SMPで効率が悪くなることもあって
ずいぶん前に流行らなくなったような記憶がある。
0449デフォルトの名無しさん
2007/01/28(日) 23:11:05よく分かりません
0450デフォルトの名無しさん
2007/01/28(日) 23:44:060451デフォルトの名無しさん
2007/01/29(月) 18:23:14http://pc10.2ch.net/test/read.cgi/tech/1167325490/
上のスレが埋まったけど、次はここ使うのか?
0452デフォルトの名無しさん
2007/01/29(月) 18:23:56新スレキボンヌ。
0453デフォルトの名無しさん
2007/01/29(月) 23:42:31C言語なら俺に聞け(入門篇) Part 7
http://pc10.2ch.net/test/read.cgi/tech/1170064980/
0454デフォルトの名無しさん
2007/01/30(火) 01:25:05Thanks
0455デフォルトの名無しさん
2007/02/15(木) 09:58:57文字列を取り出すってことができないのは悲しい。
0456デフォルトの名無しさん
2007/02/15(木) 10:16:580457デフォルトの名無しさん
2007/02/15(木) 19:47:14#include <string>
じゃなくて #include "string.h"
としていたために、
以前自分が作ったクソ文字列クラスを使ってました。
もちろん >> 演算子なんて定義してませんでした。
テヘッ
0458デフォルトの名無しさん
2007/02/16(金) 19:48:23namespace 使おうぜ
0459デフォルトの名無しさん
2007/02/16(金) 20:23:26そうしよう。
0460デフォルトの名無しさん
2007/02/23(金) 18:50:220461デフォルトの名無しさん
2007/02/23(金) 19:14:560462デフォルトの名無しさん
2007/02/23(金) 19:56:590463デフォルトの名無しさん
2007/02/23(金) 20:54:270464デフォルトの名無しさん
2007/02/23(金) 21:51:41CにJavaとかDelphiとかSQLとかくっつける
0465デフォルトの名無しさん
2007/02/25(日) 00:13:32Cの拡張版という意味で++、つまりワンステップ上の、ということでは
0466デフォルトの名無しさん
2007/02/25(日) 20:54:53C++++の+4つをくっつけて#じゃないっけ?
0467デフォルトの名無しさん
2007/02/25(日) 21:07:09もう半音上がったら当然Dだな。
0468デフォルトの名無しさん
2007/02/25(日) 21:47:08シーシャープじゃなくて、シーナンバーとするべきだ。
0469デフォルトの名無しさん
2007/02/25(日) 23:06:080470デフォルトの名無しさん
2007/02/26(月) 00:03:330471デフォルトの名無しさん
2007/02/26(月) 00:59:190472デフォルトの名無しさん
2007/02/26(月) 01:02:160473デフォルトの名無しさん
2007/02/26(月) 23:17:05(プロデューサーの声)
それだと>>471以前がまともな事言ってたみたいになるけどいいのか?
0474デフォルトの名無しさん
2007/02/27(火) 23:19:400475デフォルトの名無しさん
2007/02/28(水) 03:33:040476デフォルトの名無しさん
2007/03/01(木) 00:24:35デメリットはありますか?
0477デフォルトの名無しさん
2007/03/01(木) 00:35:10俺は作ることないな。
0478デフォルトの名無しさん
2007/03/01(木) 08:53:08. /日 「 日\_\
∴∵∴ |. │/ \ ┃ .|モツニ| おいらをどこかのスレに送って!
∵∴ ______\.ハ,,ハ.|_/__/ お別れの時にはお土産を.持たせてね!
()__|_日 ('(゚∀゚∩(@)目〓〓」_┐
∴∵ \_====―― ̄ \__┐
∵∵∴ <_<_| └― __┐
' .</</√
現在の.所持品:
0479デフォルトの名無しさん
2007/03/01(木) 15:06:53C++で基底クラスを作らないとなると
C++の機能の半分も使っていないということになるな
メリットとかデメリットとかいう以前の問題
0480デフォルトの名無しさん
2007/03/01(木) 16:54:30必要・不要は基本的に設計時の問題。
>>476
メリット
ベースクラスで共通の動作を提供できる。
継承関係によるポリモーフィズムができる。
デメリット
基底クラスと派生クラスの間に比較的密な関係が生まれやすい。
ときに基底クラスの存在が邪魔に感じることがある。
0481デフォルトの名無しさん
2007/03/01(木) 17:55:030482デフォルトの名無しさん
2007/03/01(木) 18:44:34exec : 非標準関数
0483デフォルトの名無しさん
2007/03/01(木) 19:07:270484デフォルトの名無しさん
2007/03/01(木) 19:57:25systemはShellを経由して外部のプログラムを起動する。
spawnは直接外部のプログラムを起動する。
execは自プロセス内に外部のプログラムをロードし実行する。ただしWindowsではspawnと同じ動作になる。
execやspawnは本来unixのapiであり、Cの標準関数ではない。
0485デフォルトの名無しさん
2007/03/15(木) 12:38:35vectorは配列のindexが隣同士でも
データ自体は隣同士に並んでないって可能性も考えた方がいい?
begin()で配列の先頭を取って配列として使いたいんですが。
環境はVC.net2003です。
0486デフォルトの名無しさん
2007/03/15(木) 12:53:25>データ自体は隣同士に並んでないって可能性も考えた方がいい?
もしそんな変態処理系があったら、それは「標準に準拠している」とは
呼べない。でも
>begin()で配列の先頭を取って配列として使いたいんですが。
それはまた話が別。
vector のイテレータは大抵ポインタなんで結果的に大丈夫だろうけど
先頭アドレスはできれば &hoge[0] で取るよろし。
0487デフォルトの名無しさん
2007/03/15(木) 14:06:40勿論、push_back()などの操作をした後はポインタ取り直さないとダメよ。
0488デフォルトの名無しさん
2007/03/15(木) 17:41:040489デフォルトの名無しさん
2007/03/15(木) 17:45:340490デフォルトの名無しさん
2007/03/15(木) 17:59:18配列の数が完全に固定されているときは配列
可変長になる可能性があるときは、迷わずvectorを使いましょう
0491デフォルトの名無しさん
2007/03/15(木) 19:21:38レスありがとん。
ロベールさんとこに
>実はvector が純粋な配列であるという保証はありません。
>vector の性質上それで問題ないように見えますが、それは仕様として定められていないのです。
>例えば、サイズが大きくなるとあるサイズで分断してメモリを確保するようになっていたとしても、
>誰も文句は言えないのです。
なんて書いてあるからstringあたりを使おうかと迷ってたんです。
char_traitsとか意味不明ですし
可変長配列はvector使う事にします。
0492デフォルトの名無しさん
2007/03/15(木) 19:28:42後から&v[0] + n == &v[n]が保障される記述が追加され、
なおかつ実際問題それ以前からそうなっている実装ばかりだったし、
vectorを動的な可変長配列として使うのは全く問題ない。
0493デフォルトの名無しさん
2007/03/15(木) 19:32:17...と思ったもののvector<bool>なんて異物はどうでもいいか。
0494デフォルトの名無しさん
2007/03/15(木) 20:15:570495デフォルトの名無しさん
2007/03/15(木) 20:18:400496デフォルトの名無しさん
2007/03/15(木) 21:54:07stringに関しても>>492と同じようなことが起っているので
contiguous memoryとして使って良いよ。と委員会の偉いひとが言ってた
0497デフォルトの名無しさん
2007/03/15(木) 23:03:49禿本とARMが仕様ってこと?
0498デフォルトの名無しさん
2007/03/16(金) 00:20:350499デフォルトの名無しさん
2007/03/16(金) 13:24:18>stringに関しても>>492と同じようなことが起っているので
>contiguous memoryとして使って良いよ。と委員会の偉いひとが言ってた
kwsk
0500デフォルトの名無しさん
2007/03/16(金) 16:30:290501デフォルトの名無しさん
2007/03/21(水) 20:38:28孫クラスからは継承して使用できないのでしょうか?
0502デフォルトの名無しさん
2007/03/21(水) 20:51:19private は子クラスでも使えないよ。
0503デフォルトの名無しさん
2007/03/21(水) 22:07:38ごめんなさい
protectedでした、子クラスも孫クラスからでも使えました。
0504デフォルトの名無しさん
2007/03/23(金) 06:38:47{
public:
static A* create()
{
return new A;
}
};
// B-Yまで省略
class Z :public Y
{
};
int _tmain(int argc, _TCHAR* argv[])
{
A*a = Z::create(); //ここでZのオブジェクトを返す様にしたい
return 0;
}
テンプレートとか実行時型情報か何かを使えば
createをオーバーライドせずにZのオブジェクトを返すようなことはですか?
0505デフォルトの名無しさん
2007/03/23(金) 08:12:08日本語でおk
0506デフォルトの名無しさん
2007/03/23(金) 13:08:57そんな事したら無限再帰して再起不能になっちゃうんじゃないすか?
0507デフォルトの名無しさん
2007/03/23(金) 13:09:180508506
2007/03/23(金) 13:15:44そのまま打ち込んで中身に適当なテストコードしこんでコンパイルしたらちゃんと動いちゃいました
すいません
0509デフォルトの名無しさん
2007/03/24(土) 04:54:43ちょっとだけアレなだけで
0510デフォルトの名無しさん
2007/03/25(日) 16:52:24派生クラスclass CHoge : public CFoo
派生クラスCHogeから派生したclass CVar : CHoge
この様な関係がある時、CVarクラスから基底クラスCFooのprotectedなメンバ関数への継承関係は成り立たないのでしょうか?
class CFoo
{
protected:
void SetFlg(bool flg = true){m_flg = flg;};
private:
bool m_flg;
省略
class CHoge : public CFoo
{
省略
class CVar : public CHoge
{
このクラス内でSetFlg()関数を使いたいのですが・・・
0511デフォルトの名無しさん
2007/03/25(日) 17:10:44> このクラス内でSetFlg()関数を使いたいのですが・・・
で、どうなったの?
0512デフォルトの名無しさん
2007/03/25(日) 17:28:31CHogeクラスにて、SetFlg()関数を使う場合
CHogeのヘッダーファイル
#include "CFoo.h"
class CHoge : public CFoo
{
この様に書くことでHoge.cppの実装として
void CHoge::Set()
{
bool flg = true;
CFoo::SetFlg(flg);//←この様に派生元を書かなくても、
SetFlg(flg);//この様に継承して使えるのですが
}
これと同じようにChogeクラスの孫クラスCVarの実装で同じようには使えないのでしょうか?
0513デフォルトの名無しさん
2007/03/25(日) 17:46:43実行していないがコンパイルは出来たぞ。
class CFoo
{
protected:
void SetFlg(bool flg = true){m_flg = flg;};
private:
bool m_flg;
};
class CHoge : public CFoo
{
};
class CVar : public CHoge
{
public:
void func()
{
bool flg = true;
//CFoo::SetFlg(flg);
SetFlg(flg);
}
};
0514デフォルトの名無しさん
2007/03/25(日) 18:00:19>>513サンクスです
ですよね、出来ますよね普通なんで漏れは出来ないのだろう??
0515デフォルトの名無しさん
2007/03/25(日) 18:16:280516デフォルトの名無しさん
2007/03/25(日) 18:17:11だからどうなったのさ?
コンパイルエラーから理由がわからないのかってことだよ。
0517デフォルトの名無しさん
2007/03/26(月) 17:08:22void SetStr(LPSTR str , LPSTR readStr ,
int i , int *txtLen)
{
str = (LPSTR)malloc(*txtLen+1);
strncpy(str ,
readStr + i - *txtLen,
*txtLen);
str[*txtLen] = '\0';
return;
}
strに渡した内容を改竄して、再び戻ってもstrを使用したいのですが
メモリ確保のポインタが悪いのか上手くいきません。どうすればできますか?
お願いします。
0518デフォルトの名無しさん
2007/03/26(月) 17:27:29それがどうしてもできないのなら、引数をLPSTR* str にして
関数の中のstr を *str に。
呼び出し元のstr を &strにすればいいかも。
0519デフォルトの名無しさん
2007/03/26(月) 17:28:190520デフォルトの名無しさん
2007/03/26(月) 17:31:25戻して欲しいものへのポインタを渡して、そこに戻して欲しいものを入れてもらうワケよ。
intを戻して欲しいなら、intへのポインタを渡してそこにintの値を入れてもらう。
あなたの場合は、SetStr()でmalloc()したアドレスを戻したいのだよね?
ならばLPSTRへのポインタを渡すのだ。
0522デフォルトの名無しさん
2007/03/26(月) 22:04:380523デフォルトの名無しさん
2007/03/28(水) 04:29:16Lepton (著)
この本はお薦めでしょうか?
0524デフォルトの名無しさん
2007/03/28(水) 05:47:13図書スレいけ
0525デフォルトの名無しさん
2007/03/28(水) 10:17:280526デフォルトの名無しさん
2007/03/28(水) 10:36:240527デフォルトの名無しさん
2007/03/28(水) 11:11:560528デフォルトの名無しさん
2007/03/28(水) 19:53:300529デフォルトの名無しさん
2007/03/28(水) 20:41:53526の用途に使えるかというと微妙かもしれない。
規格上処理系依存や未定義の動作になるかどうかすれすれだと思う。
0530デフォルトの名無しさん
2007/03/28(水) 21:20:220531デフォルトの名無しさん
2007/03/28(水) 23:30:41何故未定義の動作になるか説明希望
0532デフォルトの名無しさん
2007/03/29(木) 00:11:120533デフォルトの名無しさん
2007/03/29(木) 00:49:41オーバーロードもできるが、グローバルなやつを再定義することで
仮想関数のオーバーライドと同様に処理を置き換えられる。
0535デフォルトの名無しさん
2007/03/29(木) 01:51:42>規格上処理系依存や未定義の動作になるかどうかすれすれだと思う。
「そんな気がする」と思っただけでこんな発言するな。
0536デフォルトの名無しさん
2007/03/29(木) 01:57:44std::vectorに直接格納されたらどうしよう。
0537デフォルトの名無しさん
2007/03/29(木) 02:28:13ポインタが無効になってしまう可能性があるという話か。
0538デフォルトの名無しさん
2007/03/29(木) 12:48:440539デフォルトの名無しさん
2007/03/29(木) 13:44:350540デフォルトの名無しさん
2007/03/29(木) 15:10:16オライリーのAI入門始めようと思うんですが、
本家からダウソできるAIDemo2-2見たんですが難しいです。
関数群の解説だけでもお願いします。
0541540
2007/03/29(木) 15:14:000542デフォルトの名無しさん
2007/04/28(土) 14:15:27例えば
char *p = new char;
if (p != NULL) {
delete p;
}
としなくても
char *p = new char;
delete p;
で安全ですか?
0543デフォルトの名無しさん
2007/04/28(土) 14:23:530544デフォルトの名無しさん
2007/04/28(土) 14:31:220545デフォルトの名無しさん
2007/04/28(土) 14:35:04ということは、世の中にあふれている
if (p != NULL) delete p;
のif文は無駄ということですか?
0546デフォルトの名無しさん
2007/04/28(土) 14:35:24MSですら>>542のようなコードを書いてて困る
0547デフォルトの名無しさん
2007/04/28(土) 14:51:310548デフォルトの名無しさん
2007/04/28(土) 14:55:560549デフォルトの名無しさん
2007/04/28(土) 14:59:54古いな。たしかデフォルトだと new からヌルが返ってきたはず。
0550デフォルトの名無しさん
2007/04/28(土) 15:02:01delete NULL;
が安全かどうかはC++が新しい古いで変わるのでしょうか?
0551デフォルトの名無しさん
2007/04/28(土) 15:06:25ISO の国際規格に準拠した C++ コンパイラなら安全。
VC++ 6.0 は準拠していない部分が多い。
0552デフォルトの名無しさん
2007/04/28(土) 15:08:440553デフォルトの名無しさん
2007/04/28(土) 15:21:22delete NULL は桶。
0554デフォルトの名無しさん
2007/04/28(土) 15:36:43http://www.jisc.go.jp/app/JPS/JPSO0020.html
1. ここの【JIS規格番号からJISを検索】で X3014 って入力して 一覧表示 をクリッコ。
2. JISX3014 のリンクをクリッコ。
3. 規格の閲覧のリンクをクリッコ。
4. (゚∀゚)ウマー
5. ・・・あれ? テキスト検索ができないよ? (´Д`;)
0555デフォルトの名無しさん
2007/04/28(土) 15:38:32いや、デストラクタ呼ぶだろ。
0556デフォルトの名無しさん
2007/04/28(土) 15:53:44誰か安全じゃないなんて書いたか?
NULLを返すロートル仕様のnewでない限り、NULLにならないんだから問題ないだろ。
0557デフォルトの名無しさん
2007/04/28(土) 15:55:31new がヌルを返さなくても、 new の結果を保持していた変数に
ヌルが代入されることはあるだろう。たぶんそのことじゃないかな?
0558デフォルトの名無しさん
2007/04/28(土) 22:34:29VC++は含まれなかったと思われ。
ちなみにVC++でnewが失敗するとか考えるだけ無駄だ
失敗するときはOSが死んでいる
0559デフォルトの名無しさん
2007/04/28(土) 22:37:46>失敗するときはOSが死んでいる
にゅ、newをオーバーロードしてるかも知れないじゃないかッ
0560デフォルトの名無しさん
2007/04/28(土) 22:38:46一度やってみましたがメモリ使用量が1.5Gとか行ってばからしくなってやめたのを思い出した
0561デフォルトの名無しさん
2007/04/28(土) 22:51:360562デフォルトの名無しさん
2007/04/28(土) 23:02:20そうだな。お前みたいな奴が書いたプログラムがそこらじゅうで動いてるだろうからな。
0563デフォルトの名無しさん
2007/04/28(土) 23:41:50まったくもって安全。
ただ、本筋とは関係ないけどnewは失敗時にNULLを返すんじゃなくて、
例外を投げる。
だから上下のコード両方ともNULLをdeleteする呼び出し経路は存在しない。
0564デフォルトの名無しさん
2007/04/29(日) 00:04:16纏め乙。
0565デフォルトの名無しさん
2007/04/29(日) 00:51:590566デフォルトの名無しさん
2007/05/03(木) 02:30:47000 ・・・ 00A ・・・ Z00 ・・・ ZZZ
のように、数字と文字の混じったものを作成したのですが、
どうすればよいかわかりません。
よろしくお願い致します。
環境:Visual C++ EE
0567デフォルトの名無しさん
2007/05/03(木) 02:55:21#include <stdio.h>
int main() {
const char tc[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buf[4];
for (int i=0; i< (sizeof tc - 1); i++)
for (int j=0; j< (sizeof tc - 1); j++)
for (int k=0; k< (sizeof tc - 1) ; k++) {
buf[0] = tc[i]; buf[1] = tc[j]; buf[2] = tc[k]; buf[3] = 0;
puts(buf);
}
return 0;
}
0568デフォルトの名無しさん
2007/05/03(木) 03:20:50#include <stdio.h>
int main() {
const char tc[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buf[4] = { 0, };
for (const char *i=tc; 0 != (buf[0] = *i); ++i)
for (const char *j=tc; 0 != (buf[1] = *j); ++j)
for (const char *k=tc; 0 != (buf[2] = *k); ++k)
puts(buf);
return 0;
}
0569デフォルトの名無しさん
2007/05/03(木) 03:38:57#include <iostream>
#include <string>
using namespace std;
void order(int n, string& buf) {
static const char Letters[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(n == 0) {
cout << buf << endl;
} else {
for(int i = 0; Letters[i] != '\0'; ++i) {
buf += Letters[i];
order(n - 1, buf);
buf.resize(buf.size() - 1);
}
}
}
int main() {
string buf;
order(3, buf);
}
0570デフォルトの名無しさん
2007/05/03(木) 04:00:56#include <vector>
#include <string>
#include <memory>
#include <iostream>
#include <fstream>
std::auto_ptr< std::vector<std::string> >
make_seq() {
const char tc[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
std::auto_ptr< std::vector<std::string> > ret(new std::vector<std::string>);
char buf[4] = { 0, };
for (const char *i=tc; 0 != (buf[0] = *i); ++i)
for (const char *j=tc; 0 != (buf[1] = *j); ++j)
for (const char *k=tc; 0 != (buf[2] = *k); ++k)
ret->push_back(buf);
return ret;
}
std::ostream& dump(std::ostream& out, std::vector<std::string>& strs) {
typedef std::vector<std::string>::size_type strs_type;
for (strs_type i = 0, end = strs.size(); i < end; ++i)
out << strs[i] << std::endl;
return out;
}
int main() {
std::ofstream fout("out.txt");
dump(fout, *make_seq());
return 0;
}
0571デフォルトの名無しさん
2007/05/03(木) 04:08:02std::auto_ptr なんか使わずに make_seq 関数を std::vector<std::string> を
継承したクラスにでっちあげてしまえばいんじゃない?
0572デフォルトの名無しさん
2007/05/03(木) 04:09:44classの構造としては悪い例なんで恐縮なのですが
例えばC++で、hoge.hに
class hoge {
int m_i;
public
int get_i();
};
みたいなのがあるとき、それに対応するhoge.cppで自動的に、
int hoge::get_i() {
return m_i;
}
のような定義を生成するようなやつです
0573デフォルトの名無しさん
2007/05/03(木) 04:15:20その例だとインライン関数にした方がいいと思うから、
#define PROPERTY_GET(type, name) private: type m_##name; public: type get_##name() { return m_##name; }
とかいうマクロを作ったのでいいと思うけど、
このソースを見て他の人がどう思うかは知らん。
0574デフォルトの名無しさん
2007/05/03(木) 04:21:140575デフォルトの名無しさん
2007/05/03(木) 04:23:51真面目にやるとかなり大変だとは思うけど、自分の目的が果たせるだけの
手抜きなものであれば比較的楽にできると思う。でも、下手にそんなもの
作るよりはマクロでお茶を濁したほうが正解だと思うぞ。
0576デフォルトの名無しさん
2007/05/03(木) 04:35:17なんか{と}の対応をとったり空白行読み飛ばしたり
宣言の行の構文解析をしたりと大変だとは思いましたが…
素直に他の方法を検討するか、腰据えてコンパイラ、リンカの分野まで勉強するかしかないようですね
今回はVCの__declspec(property())使うことにします
ありがとうございました
0577デフォルトの名無しさん
2007/05/03(木) 04:40:47構文解析とか必要ないんじゃないかな。
class hoge { を探して、
}; が見つかるまでの間に、
*** get_+++(); ってだけ書いてある行が見つかったら、
hoge.cpp に *** hoge::get_+++() { return m_+++; } を追加、とか。
0578デフォルトの名無しさん
2007/05/03(木) 18:58:12と言われたんだけど、やっぱり駄目なの?
0579デフォルトの名無しさん
2007/05/03(木) 18:59:44・グローバルなオブジェクトにされた場合、プログラム開始から終了までファイルが開きっぱなしになる。
0580デフォルトの名無しさん
2007/05/03(木) 19:02:03ファイルが開かれてしまう。
これがいいか悪いかは状況次第ではあるかもしれないけども。
0581デフォルトの名無しさん
2007/05/03(木) 20:06:190582デフォルトの名無しさん
2007/05/03(木) 20:25:53「普通」とかいういいかげんな理由でプログラミングしないこと。
ほんとうに駄目だとしたら書き換えるのはわりと面倒になるだろうから、
何が困るのか具体的に聞いてみるといい。
> ・エラー処理が難しい。
例外投げればいい。
> ・グローバルなオブジェクトにされた場合
> ・メンバ変数にすると
完全に使う側の問題だろう。都合が悪いならポインタにすればいいし。
0583デフォルトの名無しさん
2007/05/03(木) 20:46:410584デフォルトの名無しさん
2007/05/03(木) 20:48:30「色々」って、また胡散臭いことを言う。具体的に頼む。
0585デフォルトの名無しさん
2007/05/03(木) 20:55:48コンストラクタ内の例外安全はスマートポインタで確保
0586デフォルトの名無しさん
2007/05/03(木) 20:56:26http://www.cmagazine.jp/src/kinjite/cpp/exception.html
0587デフォルトの名無しさん
2007/05/03(木) 21:04:13それは書いた奴が C++ のオブジェクトモデルを正しく理解していないだけ。
コンストラクタが完了したオブジェクトについては必ずデストラクタが呼ばれる。
「他のメンバのスキルが怪しそうな場合は〜」ってのがオマエモナーって感じ。
0588デフォルトの名無しさん
2007/05/03(木) 21:06:38そこで書いてるのって、
コンストラクタで例外飛んだらデストラクタ起動しないよ。
としか書いてないような気がする。
正直、そんなあたりまえの事で使うなっていわれてもなぁ
ついでにそのすぐ下ではデストラクタでの例外に付いて、
的外れな問題点を書いてるし。
本質的な問題はそこじゃねー
件の文章を読んでると、
例外安全性についての基本的知識が欠如してるっぽいから
参考にするのは無理があるな。
0589デフォルトの名無しさん
2007/05/03(木) 21:19:190590デフォルトの名無しさん
2007/05/03(木) 21:37:05#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A" << endl; }
~A() { cout << "~A" << endl; }
};
class E {
public:
E() { throw exception(); }
};
class B {
A a;
E e;
};
int main() {
B b;
}
0591デフォルトの名無しさん
2007/05/03(木) 21:38:46いじらなくても呼ばれるだろ。
0592デフォルトの名無しさん
2007/05/03(木) 21:39:470593デフォルトの名無しさん
2007/05/03(木) 21:45:21呼ばれたけど・・・。
0594デフォルトの名無しさん
2007/05/03(木) 21:46:29全く呼ばれないぞ。
0595デフォルトの名無しさん
2007/05/03(木) 21:51:19↓こうしたら出た。
- B b;
+ try { B b; } catch(...) { }
0596デフォルトの名無しさん
2007/05/03(木) 21:51:40例外が一切ハンドリングされない場合はデストラクタを呼ぶかは未定義。
例えばg++とかはデストラクタ呼ばずにabortする。
>>590
main関数を
try{B b;}catch(...){}で囲めばデストラクタが呼ばれる.
0597デフォルトの名無しさん
2007/05/03(木) 21:53:14なるほど。そこだったか。
0598デフォルトの名無しさん
2007/05/03(木) 21:59:0915.3 "Handling an exception"
p9
"If no matching handler is found in a program, the function terminate() is called;
whether or not the stack is unwound before this call to terminate() is implementation-defined."
0599デフォルトの名無しさん
2007/05/03(木) 22:53:49これ2chたまに見るな
出される度にボコボコにされてるけどw
0600デフォルトの名無しさん
2007/05/03(木) 22:59:320601デフォルトの名無しさん
2007/05/04(金) 02:44:15Cで関数を分割していく過程で、キーになる値などは引数で渡したりするのが一般的だと思いますが
C++だとキー項目をクラスのメンバにして、引数で渡さずに直接メンバ変数として参照するケースが多いみたいですが
これって、複数の関数内部で共通的に使うものならば、なんでもメンバ変数にしとけばいいってことですか?
今までCしか開発したことがなかったので、どうクラスを作っていいか悩んでばかりです。
0602デフォルトの名無しさん
2007/05/04(金) 02:49:11「なんでも」ってことはない。共通で使う値になんらかの制約があったり、
自然にオブジェクトが見出せたりするときはクラスが適任。
0603デフォルトの名無しさん
2007/05/04(金) 02:52:01OOもどきがやりたいなら、お願いだからOOの勉強してからにしてください。
0604デフォルトの名無しさん
2007/05/04(金) 03:11:00構造体の使い方はよくわかっているはずだし
それを拡張したclassの基本的な使い方がわからないはずは無いのだが。
0605デフォルトの名無しさん
2007/05/04(金) 03:14:57カプセル化だけじゃなく、ポリモーフィズムも class の根幹であり、
これは C では(不可能ではないが)なじみの薄いところだ。
0606デフォルトの名無しさん
2007/05/04(金) 03:38:59FILE*の中身(実装)を知らなくてもopen/read出来ることと
逆にいえばデバイスの種類がファイルの実体でなくても同じように読み書きできること
これをわかっている奴が
継承による多態が理解できないわけ無いっての。
その程度もわかってない奴が、偉そうなこと言うなよ。
0607デフォルトの名無しさん
2007/05/04(金) 08:49:58C だと普通それは分岐で実装するんだよ。
0608デフォルトの名無しさん
2007/05/04(金) 17:21:03もしかして、デバイスドライバとかで
普通に関数ポインタがメンバに入ってるの知らないの?
0609デフォルトの名無しさん
2007/05/04(金) 17:28:25関数ポインタのテーブルへのポインタ、
つまりC++におけるvptrを登録することによって動作を変える
そういうのも珍しくない。
もちろん、普通のコードで当たり前に使っているというわけじゃないけど
そういうものを理解できる人、つまりCを使いこなせてる人が
C++のクラスを理解できないなんて、ありえないんだよ。
0610デフォルトの名無しさん
2007/05/04(金) 17:54:17俺はデバドラも触る人間だから知ってるけど、
デバドラなんて普通の人は触らないぞw
0611デフォルトの名無しさん
2007/05/04(金) 18:16:510612デフォルトの名無しさん
2007/05/04(金) 18:50:36structをアクセス指定子がデフォルトでpublicであるclassって
認識で使っちゃっていいんでしょうか?
0613デフォルトの名無しさん
2007/05/04(金) 19:00:490614デフォルトの名無しさん
2007/05/04(金) 20:12:440615デフォルトの名無しさん
2007/05/04(金) 20:25:460616デフォルトの名無しさん
2007/05/04(金) 20:42:52int* p;
と書くことが多いようですが、なんで
int *p;
こう書かないのでしょうか?
Cではこの書き方が一般的なのに。
0617デフォルトの名無しさん
2007/05/04(金) 20:49:00まあ、C++ ではほとんどみないけど。
理由はワカランが、一行に複数の変数を宣言しないスタイルが広まったから、
わざわざ *p と書く必要性が薄くなったんじゃないかね?
int* p; の方が見やすいし。
0618デフォルトの名無しさん
2007/05/04(金) 21:03:39•ポインタとは別に参照int& r;があり、int *pは「*pがint」と読めるというルールが全ての型に通用しなくなった。
0619デフォルトの名無しさん
2007/05/04(金) 21:11:460620デフォルトの名無しさん
2007/05/04(金) 21:44:000621デフォルトの名無しさん
2007/05/04(金) 21:52:34http://www.research.att.com/~bs/bs_faq2.html#whitespace
0622616
2007/05/04(金) 22:10:09ありがとうございました。
0623デフォルトの名無しさん
2007/05/14(月) 21:12:03h = hpp
0624デフォルトの名無しさん
2007/05/14(月) 21:16:28hppはC++のヘッダであることを明示するとかなんとか聞いた
C++の場合hでも事実上変わらないからhにしてる場合も多いが
Boostではhppで統一してたな
0625デフォルトの名無しさん
2007/05/19(土) 15:30:240626デフォルトの名無しさん
2007/05/19(土) 16:05:39Cのヘッダと区別したいとか
0627デフォルトの名無しさん
2007/05/19(土) 19:10:080628デフォルトの名無しさん
2007/05/21(月) 22:23:08class test {
public:
test() {
std::cout << "コンストラクタ1" << std::endl;
}
test(int i) {
std::cout << "コンストラクタ2 : " << i << std::endl;
}
};
test t; // これは、「コンストラクタ1が呼び出される」
test t2(1); // これは、「コンストラクタ2が呼び出される」
test t3(); // 何も呼びだれない。
なぜ、t3()は何も呼び出さないのか教えてください。
環境:MinGW C++(3.4.2)
0629デフォルトの名無しさん
2007/05/21(月) 22:26:390630デフォルトの名無しさん
2007/05/21(月) 22:28:43test t3(); は test型のオブジェクトを返す関数の宣言だから。
0631デフォルトの名無しさん
2007/05/21(月) 22:31:540632デフォルトの名無しさん
2007/05/21(月) 22:34:32オブジェクトを返すと。
すいません、意味がわかりません。
0633デフォルトの名無しさん
2007/05/21(月) 22:45:29test f( int i ); も判る?
test f( void ); は、どう?
test f(); になると?
みんな関数の宣言なわけよ。
0634デフォルトの名無しさん
2007/05/21(月) 22:45:49変数の初期化と関数宣言のどちらにも解釈できるコードは、
関数宣言として解釈される。
これはCとの互換性を保つための仕様。
0635デフォルトの名無しさん
2007/05/21(月) 22:50:580636デフォルトの名無しさん
2007/05/21(月) 22:54:21有難う御座いました。
0637デフォルトの名無しさん
2007/05/21(月) 23:02:32気持ち悪いのはお前だろ…
0638デフォルトの名無しさん
2007/05/21(月) 23:21:15いや、2chに来ているやつ全員
0639デフォルトの名無しさん
2007/05/21(月) 23:26:17つhttp://chiebukuro.yahoo.co.jp/
優しく答えてあげるわよ
0640デフォルトの名無しさん
2007/05/21(月) 23:50:53生成済みのインスタンスを対象にするなら、
先にデストラクタを呼んでおかないとまずいだろう。
0641デフォルトの名無しさん
2007/05/21(月) 23:52:040642デフォルトの名無しさん
2007/05/21(月) 23:57:22テンポラリオブジェクトを生成しているだけだったりする
ってのがよくあるオチ。
0643デフォルトの名無しさん
2007/05/22(火) 00:34:38そういうことをいうお前が一番きもい
0644デフォルトの名無しさん
2007/05/22(火) 01:49:49それらのソースをひとつずつビルド→実行することは出来ないのでしょうか?
要するにコマンドプロンプトで「bcc32 〜.cpp」ってやるような単純な手順を、VC++上でやりたいという話なのですが…
0645デフォルトの名無しさん
2007/05/22(火) 02:41:05単にテストが目的なら
それぞれ普通の関数にしてmain()から順々に呼んでやればいいんじゃね?
0646デフォルトの名無しさん
2007/05/22(火) 07:40:28mainの数だけプロジェクト作れ
0647デフォルトの名無しさん
2007/05/22(火) 19:49:55それとも、hppの中にすべて実装していますか?
0648デフォルトの名無しさん
2007/05/22(火) 20:18:04ヘッダ内にあるべきものと、そうでないものの
区別が付かないと申すか?
0649デフォルトの名無しさん
2007/05/22(火) 20:31:48hppの中に書かざるを得ない…
0650デフォルトの名無しさん
2007/05/22(火) 20:32:31int x = 10;
p = &x;
printf("%d", *p);
これでは10が表示されるみたいですが、
char *p;
p = "aaaa";
printf("%s", *p);
こうするとエラーがでます。printf("%s", p)とすればaaaaと表示されます。
1番目に書いたほうは理解できたのですが、
同じように考えて2番目もするとエラーでした。
この違いはなんなんでしょうか?
0651デフォルトの名無しさん
2007/05/22(火) 20:33:110652デフォルトの名無しさん
2007/05/22(火) 21:01:37そういうことです。
0653デフォルトの名無しさん
2007/05/22(火) 21:34:30■ .hpp に書くもの
・他所の .hpp や .cpp から利用することがあるもの。
・宣言
・クラス定義
■ .cpp に書くもの
・他所の .hpp や .cpp から利用することがないもの。
・クラス定義以外の定義
0654デフォルトの名無しさん
2007/05/22(火) 22:21:37なるほど、有難うございます。
0655644
2007/05/22(火) 22:55:160656デフォルトの名無しさん
2007/05/22(火) 23:15:53つ ttp://phys.cool.ne.jp/physjpn/bccwin.htm
0657デフォルトの名無しさん
2007/05/23(水) 01:24:21初期化とか。
0658デフォルトの名無しさん
2007/05/23(水) 01:41:310659デフォルトの名無しさん
2007/05/23(水) 08:32:210660デフォルトの名無しさん
2007/05/23(水) 13:58:15インライン関数にしてればそうなるけども、
そうでなければ外部リンケージじゃん。
0661デフォルトの名無しさん
2007/05/23(水) 14:02:010662デフォルトの名無しさん
2007/05/23(水) 14:08:48インライン展開されなければ実質的には外部リンケージになるんだよね?
まあ、要するに、実体が1つしか作られないんだよね、という質問。
0663デフォルトの名無しさん
2007/05/23(水) 23:44:38インラインかどうかとリンケージは関係ない。
0664デフォルトの名無しさん
2007/05/24(木) 01:48:190665デフォルトの名無しさん
2007/05/24(木) 02:05:050666デフォルトの名無しさん
2007/05/24(木) 02:34:00レスども。本屋にでも行って調べてきまつ。
0667デフォルトの名無しさん
2007/05/24(木) 07:25:23教えてくだしあ><//
0668デフォルトの名無しさん
2007/05/24(木) 08:25:24Borland C++Compiler 5.5
http://72.14.235.104/search?q=cache:95Q74q8y9IIJ:www.borland.co.jp/cppbuilder/freecompiler/+Borland+C%2B%2BCompiler+5.5&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja&client=firefox
CPad for Borland C++Compiler2.31
http://www.vector.co.jp/soft/dl/win95/prog/se141451.html
0669デフォルトの名無しさん
2007/05/24(木) 23:51:25ありがとうございます。
ダウンしたフォルダの中にexeがなかったのですが
どうすればいいでしょうか?・・・
0670デフォルトの名無しさん
2007/05/25(金) 00:05:190671デフォルトの名無しさん
2007/05/25(金) 00:34:30XPデフォルト拡張子非表示で
そもそもexeを知ってるわけ無いだろ
というわけで釣乙
0672デフォルトの名無しさん
2007/05/26(土) 00:08:23Windowsみたいな欠陥OSを使っていてはおぼつかない。
Cドライブをフォーマットして、PC UNIXを入れなさい。
そうすれば最新のg++でプログラミングできる。
0673デフォルトの名無しさん
2007/05/26(土) 01:13:08PC UNIX って NTFS にインストールできるの?
0674デフォルトの名無しさん
2007/05/26(土) 01:32:13やろうと思えばできるよ
0675デフォルトの名無しさん
2007/05/26(土) 01:34:58インストールはできるけど、動かないよとかそんな落ちじゃなくて?
マジに普通にうごくの?
0676デフォルトの名無しさん
2007/05/26(土) 13:02:43それはunixが使える人間の戯言
相手のレベルも考えず自分の主観だけで「俺様理論」を振りかざすのは愚行でしかない
初心者にunixを薦める場合、そもそもunixをインストール出来るか否かが問題
使えるようになるかどうかが、さらに問題
結果的にはコンパイル以前の問題で躓く可能性が高い
0677デフォルトの名無しさん
2007/05/26(土) 13:20:190678デフォルトの名無しさん
2007/05/26(土) 14:13:12#インストールだけなら
それこそ、それさえできない香具師がプログラミングだなんて烏滸がましいと思うぞ。
0679デフォルトの名無しさん
2007/05/26(土) 14:52:550680デフォルトの名無しさん
2007/05/26(土) 14:55:390681デフォルトの名無しさん
2007/05/26(土) 22:45:27それは最近のPC UNIXを知らない人間の戯言
インスコの簡単さも知らず自分の主観だけで以下省略
0682デフォルトの名無しさん
2007/05/26(土) 22:58:33おじさんビックリだよ
0683デフォルトの名無しさん
2007/05/26(土) 23:00:540684678
2007/05/26(土) 23:31:49PC Unixに限らないよ。Sparc版Solarisだってとっても簡単。
PCと違ってバリエーションが少ない(なんせ自社製ハードしかない)から
組み合わせで苦労することもないし。
0685デフォルトの名無しさん
2007/05/27(日) 00:00:450686デフォルトの名無しさん
2007/05/27(日) 00:02:15大概対応してるけどね
0687デフォルトの名無しさん
2007/05/27(日) 00:29:27またお前は適当なことを。
0688デフォルトの名無しさん
2007/05/27(日) 00:33:43富士通とかも出してるよ
0689デフォルトの名無しさん
2007/05/27(日) 00:44:39インスコに必要なデバイスに対応してないってことは
あんまりないでしょ
オンボードのサウンドすらあっさり認識されるよ
と俺はLinux板でアドバイスしてるよ
まあおまいらも騙されたと思ってインスコしてみそ
0690デフォルトの名無しさん
2007/05/27(日) 01:07:030691デフォルトの名無しさん
2007/05/27(日) 01:15:31まあ板違いだからな言葉も違う
廚の振りしたプロも多いよ
0692デフォルトの名無しさん
2007/05/27(日) 01:27:18俺の知ってるLinux厨はでかい態度で、できるできるっていうわりに
実際にやらせたらできないことが多かったんでどうもLinux厨は信用ならん。
しかも、そいつできなかったことに対して自分の間違いを認めたことは一度もなし。
まぁ、おまえがどうなのかは知らんが、Linux厨に限らず俺が見てきた
オープンソース派なヤツはおしなべてそんなヤツが多すぎ。
0693デフォルトの名無しさん
2007/05/27(日) 02:10:46周りがWindowsばかりだからw 目的があって使っているならまだしも・・・
多種さまざまな目的において、Windowsの方が使いやすいし
なんといってもデバイスドライバやソフトウェアの種類がLinuxへの
完全な乗り換えを思いとどまらせる。まぁ、KNOPPIX使うことはあるけど。
大学じゃUNIXでC言語の授業を受けてたけど、自宅じゃWindowsで
0694678
2007/05/27(日) 02:25:28昔あった「ラップトップEWS」は確かに富士通製だったけど、
その後はOEMしかなかったと思ったのだけど……
出してたっけ?
#某芝で売っているEWSは剥がれ掛けのラベルの下に「Sun」の文字がw
0695デフォルトの名無しさん
2007/05/27(日) 10:32:00おととしあたりに共通化の発表したと思った。
それまでは単なるOEMでは無かった。
0696デフォルトの名無しさん
2007/05/27(日) 22:17:06家ではOSX上でEclipseを使ってます><
Eclipseさえ動けばなんでもいいよ
0697デフォルトの名無しさん
2007/05/30(水) 17:55:160698デフォルトの名無しさん
2007/06/03(日) 02:17:580699デフォルトの名無しさん
2007/06/03(日) 02:53:100700デフォルトの名無しさん
2007/06/03(日) 12:44:190701デフォルトの名無しさん
2007/06/04(月) 00:10:04a+b*cのかわりに、a.add(b.multiply(c))みたいな不自然な書き方を
使用者が強いられるって話じゃないの。
0702デフォルトの名無しさん
2007/06/07(木) 02:03:56↑でEOFまで達すると、seekgで読み込み位置修正は無理でしょうか?
0703デフォルトの名無しさん
2007/06/07(木) 02:08:58一回 clear() すればたぶん大丈夫。
0704デフォルトの名無しさん
2007/06/07(木) 02:15:43有り難う!
0705デフォルトの名無しさん
2007/06/08(金) 03:21:23それを数値に変換する事は可能でしょうか?
0706デフォルトの名無しさん
2007/06/08(金) 03:29:580707デフォルトの名無しさん
2007/06/08(金) 19:16:150708デフォルトの名無しさん
2007/06/08(金) 19:43:470709デフォルトの名無しさん
2007/06/09(土) 05:30:020710デフォルトの名無しさん
2007/06/30(土) 04:58:170711デフォルトの名無しさん
2007/06/30(土) 04:59:31例えば yoshio という文字列から o が2つあるといった感じで
0712デフォルトの名無しさん
2007/06/30(土) 05:00:45ん?末尾から5文字にはどうしたらって、見捨てないで普通に使ってくださいな。
0713デフォルトの名無しさん
2007/06/30(土) 05:01:14>>711 ありますよ。
0714デフォルトの名無しさん
2007/06/30(土) 05:16:40例えば yoshio という文字列から o が2つあるといった感じで
あるとしたらどういうものがありますか?
0715デフォルトの名無しさん
2007/06/30(土) 06:38:45#include <algorithm>
#include <cassert>
int main() {
using std::string;
{ // <<710の問いに対するエスパー回答
string str("123456789");
int n(5);
string::size_type len = str.length();
string::const_iterator e(str.end());
assert( str.substr(len-n, len) == string(e-n, e) );
}
{ // <<714の問いに対する(ry
string str("nullponullpo");
string::size_type num(0);
string::iterator i(str.begin()), e(str.end());
while ( i != e ) {
i = std::find(i, e, 'l');
if (i == e) break;
++num;
++i;
}
assert( num == 4 );
}
}
0716デフォルトの名無しさん
2007/06/30(土) 12:24:59const 配列のアドレスと要素数を取得する関数は↓のうちどれが一般的ですか?
(例はint型配列を取得する関数の宣言)
�@void getArray(const int*& array, int& num);
�Aconst int getArray(const int*& array);
�Bconst int numofArray();
+ void getArray(const int*& array);
�C他あればそれを教えてくだされ
0717デフォルトの名無しさん
2007/06/30(土) 12:37:14#define ELEMOF(array) (sizeof (array) / sizeof *(array))
みたいなことがやりたいのか?
それならこうだぜ。
#define ELEMOF(array) (sizeof ELEMOF_((array)))
template <typename T, size_t N> char (&ELEMOF_(const T (&)[N]))[N];
0718デフォルトの名無しさん
2007/06/30(土) 12:38:55int size();
const int* data();
みたいなのを作るんじゃないか?
0719デフォルトの名無しさん
2007/06/30(土) 12:54:090720デフォルトの名無しさん
2007/06/30(土) 13:06:170721デフォルトの名無しさん
2007/06/30(土) 13:09:200722デフォルトの名無しさん
2007/06/30(土) 13:11:250723716
2007/06/30(土) 13:14:36う〜ん、やっぱり関数の戻り値として取得するのがいいですかね。
要素数を求める用と配列のアドレスを求める用の関数を実装して取得するようにします。
ありがとう
0724デフォルトの名無しさん
2007/06/30(土) 15:10:120725デフォルトの名無しさん
2007/06/30(土) 15:10:420726デフォルトの名無しさん
2007/06/30(土) 20:30:22int n = strspn(s.c_str(), "\t"); < こんな感じ。 sはstring型
0727デフォルトの名無しさん
2007/06/30(土) 20:55:210728デフォルトの名無しさん
2007/06/30(土) 21:18:240729デフォルトの名無しさん
2007/06/30(土) 21:22:35m9 三 9m
彡 ∧∧ ミ
m9 (^Д^) 9m プギャプギャプギャプギャー!!
ヾヽ\ y ) 彡
m9/三 9m
∪ ̄ ̄ ̄\)
0730デフォルトの名無しさん
2007/06/30(土) 21:36:57ある文字列から、指定した1文字の数を検索する方法を教えてくれYO!
0731デフォルトの名無しさん
2007/06/30(土) 21:40:010732デフォルトの名無しさん
2007/06/30(土) 21:45:41使い方の例を教えてください、おながいします!
0733デフォルトの名無しさん
2007/06/30(土) 21:50:35いろいろやってみればいいだろ。
それをしないからお前はいつまで経ってもそうなんだ。
0734デフォルトの名無しさん
2007/06/30(土) 21:54:41int n = std::count( s.begin(), s.end(), '\t' );
0735デフォルトの名無しさん
2007/06/30(土) 21:55:14はぁ?教えられないくせに自分は知ってますよだ?ちゃんと yoshio の中から o の数を
って具体的な例を挙げて質問しているじゃん。答えられないならしゃしゃり出てくるなよ
所詮お前もあれだろ?質問者を見て、自分より劣る奴にはでけぇ面できる役立たずの
ウドの大木だろ? スレタイ 読んでから二度とお前はこのスレでレスするな。
少なくともお前みたいな、知らない奴を叩くだけの奴に答えてもらいたいなんて思う奴はいない。
失せろ、クズw
0736デフォルトの名無しさん
2007/06/30(土) 21:57:04んで、あまりにも的外れなレスするから、そいつが発する言葉は全て無視されて
周りは「あっ、なんか知ったかのバカがほざいているよ」って思われてるんだよねw
知っているなら知っていると、知っていることを示すレスをすりゃ良いのに、
そんなんだからいつまで経ってもそうなんだ。何がそうなんだか知らないがそうなんだw
733 名前:デフォルトの名無しさん 投稿日:2007/06/30(土) 21:50:35
>>732
いろいろやってみればいいだろ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
何がそうなの?w
0737デフォルトの名無しさん
2007/06/30(土) 21:59:03よそでやってくれ
0738デフォルトの名無しさん
2007/06/30(土) 21:59:10thanks a lot.助かりますた。
0739デフォルトの名無しさん
2007/06/30(土) 21:59:20size_t n = boost::(s, '\t');
ちなみにこっちは非標準のboost::range_exのargorithm.hppだから適当にリポジトリから拾ってきてね
0740デフォルトの名無しさん
2007/06/30(土) 22:00:23737 名前:デフォルトの名無しさん 投稿日:2007/06/30(土) 21:59:03
バカが何ほざいてんだか
よそでやってくれ
スレタイ読んでからこのスレの意味を理解しろや、ボケが。
↓何これ?お前のはレスになってねーんだよ、そういうのは茶化しって言うんだよ。
733 名前:デフォルトの名無しさん 投稿日:2007/06/30(土) 21:50:35
>>732
いろいろやってみればいいだろ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
それをしないからお前はいつまで経ってもそうなんだ。
0741デフォルトの名無しさん
2007/06/30(土) 22:02:15バカはおめーだろ。バカは。答える気がないのに質問している人を煽るだけかよ?
周りからしてみりゃ、お前が答える能力がないくせに、なんとなく知っているって話だろ。
具体的にどういうものがあるかも示せないくせに、さも知ったような口聞くんじゃねーよ、
ヘボプログラマーw お前みたいな三流以下はプログラマーに向いていないどころか
知った気になって間違った不適切な手法を用いてバグを出しまくって、信頼を失って
仕事も入らなくなるんだよなw
0742デフォルトの名無しさん
2007/06/30(土) 22:04:22C++なら俺に聞け(入門篇)、ただし、基地外のぞく
基地外警報発令
0743デフォルトの名無しさん
2007/06/30(土) 22:06:26だからおめーに聞いてねーってwwww でしゃばるだけのまともな回答をしない奴が
何俺に聞けとか偉そうにしてんだよ?お前みたいな役立たずバカになんて聞いてねーし
レスしてもらいたいなんて思わないよ。医者だとしても治療とか言って
治療したつもりが悪化させてしまうような奴な医者を誰も頼らないし
そんなのは医師免許を剥奪するのが望ましい。して、お前は医師免許すら持っていない
偽医者だから、引っ込んでろ。
0744デフォルトの名無しさん
2007/06/30(土) 22:07:29うわっ、お前の口キムチくせぇ。頼むからその口開かないで祖国に帰れ、な?
0745デフォルトの名無しさん
2007/06/30(土) 22:07:410746デフォルトの名無しさん
2007/06/30(土) 22:14:16自分で↓ここまでやったから。後は知ったかのお前をとっくに超えている俺にひれ伏すんだなw
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string s;
char src;
int n;
printf("Input 文字列> ");
cin >> s;
printf("Input 検索文字> ");
cin >> src;
cout << static_cast<int>(count( s.begin(), s.end(), src )) <<endl;
return 0;
}
0747デフォルトの名無しさん
2007/06/30(土) 22:14:480748デフォルトの名無しさん
2007/06/30(土) 22:15:27勝手に逝ってろ
0749デフォルトの名無しさん
2007/06/30(土) 22:16:34安心しろw ここで知らない奴を見つけては煽るだけのバカよりよっぽどマシだから。
いずれこのスレは俺が主体となってレスするようになるから、低レベルな自分が
通用するような今の現状で満足していろ。自民党が参院選で負けてその後悲惨な
結末をたどるように、初心者を叩くだけで自分は出来た気になっちゃっているアホは
いずれ時間の経過とともに年をとって、苦労するだろうw
0750デフォルトの名無しさん
2007/06/30(土) 22:18:210751デフォルトの名無しさん
2007/06/30(土) 22:19:460752デフォルトの名無しさん
2007/06/30(土) 22:22:140753デフォルトの名無しさん
2007/06/30(土) 22:24:04基本的なことは習ったから。論理演算子やプログラミングの授業もあったし
実験や研究でもそれに関する内容があったし。ただ、プログラミングを本格的にやるような
学科じゃなかったから、最近になってやり始めたのさ。言語の実装について理解できれば
後はそれと数学的な理論を用いてより推敲されたコードを記述してオマエラをあっと言わせてやんよ?
やっぱ大学くらい行くべきだな。ちょこっと専門学校でかじったくらいの奴らにはぜってぇ〜負けないw
0754デフォルトの名無しさん
2007/06/30(土) 22:26:12ポインタ理解してない奴が多いイメージがあんだけど
0755デフォルトの名無しさん
2007/06/30(土) 22:27:17countの使い方くらい検索すればでてくるだろ?
0756デフォルトの名無しさん
2007/06/30(土) 22:29:340757デフォルトの名無しさん
2007/06/30(土) 22:30:28ttp://www.geocities.jp/ky_webid/cpp/library/016.html
0758デフォルトの名無しさん
2007/06/30(土) 22:32:48言語の実装をココで聞かなくていいじゃね
0759デフォルトの名無しさん
2007/06/30(土) 22:33:39ちょっくらC++の参考書でも買ってくる。オマエラに聞くよりマシだろうからなw
0760デフォルトの名無しさん
2007/06/30(土) 22:38:09ポインタ理解してない香具師なんかいくらでもいたろ
0761デフォルトの名無しさん
2007/06/30(土) 22:41:57だから何?もちろんポインタなんてC言語じゃ普通に使っているが?ナイト不便だしな。
0762デフォルトの名無しさん
2007/06/30(土) 22:46:44あー、判ってないな。
0763デフォルトの名無しさん
2007/06/30(土) 22:48:07自分基準で間違っているって言う奴はただのバカ。実態はアドレスだよ。間接演算子を用いて
そのアドレス上の値を参照するんだが?もちろん型の指定は忘れるなよ、初心者w
http://www.google.co.jp/search?q=C%E8%A8%80%E8%AA%9E%E3%80%80%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
0764デフォルトの名無しさん
2007/06/30(土) 22:48:55メモリ上のアドレスって何?
0765デフォルトの名無しさん
2007/06/30(土) 22:51:32>実態はメモリ上のアドレスを示すもんだろ
あー、判ってないな。
↑こいつは多分、ポインタを配列だと勘違いしているんだろうな。
ポインタは言葉が持つ意味のごとく「指し示すもの」。
ttp://www.techscore.com/tech/C/6.html
プログラムで使用されるデータは、全てメモリに保持されます。
C言語で作成されたプログラムも同様に、変数が保持するデータは全てメモリで管理されます。
通常プログラマはメモリのどこに変数のデータが管理されているか意識しなくて良いようになっていますが、
データが格納されているメモリアドレスを操作する仕組みも提供されています。
それを「ポインタ」と呼びます。
はいっ、間違っているってならこういう説明をしているサイト全てに抗議してこいよw
0766デフォルトの名無しさん
2007/06/30(土) 22:51:570767デフォルトの名無しさん
2007/06/30(土) 22:53:17今の大学だろうが、昔の大学だろうが、卒業しても
ポインタ理解してない香具師なんかいくらでもいたろ
↑こいつ、大学出ててもポインタを知らないような奴ならでけぇ面が出来る
専門学校卒っぽいな。所詮この程度。しかも自分が分かっていないことを露呈www
↓
762 名前:デフォルトの名無しさん 投稿日:2007/06/30(土) 22:46:44
>実態はメモリ上のアドレスを示すもんだろ
あー、判ってないな。
↑お前ガナーwwwww ポインタはアドレスを示すものだよ。ちゃんと実態を把握しましょうね、専門学校w
0768デフォルトの名無しさん
2007/06/30(土) 22:53:41/___ / | / / | /__ __/ [][] / / _| |_
/ / / / / / ̄ ̄|. l / / / / |_ レ'~ ̄|
/ /. / / / /. / / | |___ \ \ / /| |
/ / / / /  ̄ ̄ / \__| \ \ /_ / | |_
/ / / / / / ̄ ̄ ̄  ̄ ̄ .|__| \/
/ / / / / /
/ /____. / / / /
/ / / | / /
 ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄  ̄
0769デフォルトの名無しさん
2007/06/30(土) 22:54:47自分でやれよ。
0770デフォルトの名無しさん
2007/06/30(土) 22:55:14えっ?えええええええええええ!?お前、メモリについても無知か・・・
そもそもコンピュータって、何か演算処理する場合、一度メモリにデータが書き込まれて
それをCPUが読み込んで処理して、場合によってはHDDやその他の記憶装置に
保存する仕組みがあるのは、3流大学の情報系の授業でもやるぞ?w
お前、コンピュータの五大装置とその役割を説明してみろよ?w
あぁあ、お前が低学歴だってのがバレちゃっただけだな・・・たかが count くらいで
偉そうにするから・・・やれやれ。
0771デフォルトの名無しさん
2007/06/30(土) 22:55:43× 実態
○ 実体
まーこんな揚げ足取る以前にどうも分かってない気がすんだが。
ポリモーフィズム使いこなそうと思うと曖昧な知識じゃやってけんぞ。
0772デフォルトの名無しさん
2007/06/30(土) 22:59:58ポインタも知らないくせに大学を出ていてもポインタを知らない奴を持ち出して
自分の方が上だと勘違いする奴がこんなスレで偉そうに知らないくせに
知ったような口を聞いて、答にもならないレスをしていたと い う の か?
頼む、笑いが止まらない、お前は二度とこのスレで質問者にレスするな。邪魔。
いずれ俺がこのスレで主体となってレスするから、それまでにお前はこのスレから離脱しろ?な?
お前にプログラミングは向いてない。なぜなら、プログラムを動作させる
汎用電子計算機について全く理解していないから。
車の運転においても、国によって道路交通法は違う。車の運転(アクセル、ブレーキを踏む程度)
で運転が出来た気になっていて、その国のルールを無視するような運転をする奴に
運転免許なんて与えられないよな。お前はそんな感じでキーボードを叩けるくらいで
コンピュータを使えた気になってしまっていることに気づけ。お前どこの学校卒だ?痛々しい。
0773デフォルトの名無しさん
2007/06/30(土) 23:00:230774デフォルトの名無しさん
2007/06/30(土) 23:01:49でた〜〜〜、その程度のことを指摘して、今度は自分は知っていますよアピールですか?wwww
まぁ、変換ミスしたことは認めるけど、それで ポインタ について知らなかったことにはならないからw
あと、何度も言うようだが、C言語ではポインタなんて当たり前のように使っているし、ないと不便。
C言語だろうと、C++だろうと、どちらも汎用電子計算機に計算処理をさせるためのコードの記述を
その実装された仕組みにあわせてすることにはなんら変わりは無い。メモリのアドレスすら
知らない奴が、ポインタについて知っていないと評価するなんてちゃんちゃらおかしいことだw
0775デフォルトの名無しさん
2007/06/30(土) 23:02:39すごいお前がなんで、高卒PG見習いの俺だって知ってるcountの使い方が解らないんだよ。
だから、バカにされたんだぞ。
0776デフォルトの名無しさん
2007/06/30(土) 23:04:24でた〜〜〜、その程度のことを指摘して、今度は自分は知っていますよアピールですか?wwww
まぁ、変換ミスしたことは認めるみたいだけど、それでポインタについて知ってることにはならないからw
あと、何度も言ってるようだが、C言語ではポインタなんて当たり前のように使っているし、ないと不便。
C言語だろうと、C++だろうと、どちらも汎用電子計算機に計算処理をさせるためのコードの記述を
その実装された仕組みにあわせてすることにはなんら変わりは有る。ポインタすら
知らない奴が、メモリのアドレスについて知っていないと評価するなんてちゃんちゃらおかしいことだw
0777デフォルトの名無しさん
2007/06/30(土) 23:05:16countの使い方を知らないのはいいけど、教えてもらっても使い方を検索もできないで、
教えろって暴れるのがどうしようもないっていうか。
0778デフォルトの名無しさん
2007/06/30(土) 23:06:18>>761
メモリ上のアドレスって何?
このレスにはマジ吹いた。飲んでたジュースを噴出した画面とキーボードと
PC本体がコーラまみれになっちまったぜい!賠償を請求するニダ!
0779デフォルトの名無しさん
2007/06/30(土) 23:06:39count知らなかったの?ウチの小学生の娘も笑ってますよw
__,. -─-- 、_
, - ' _,´ --──‐- )
,イ´__-___,. -‐ '__,. - '´
`ー----, - ' ´ ̄ `` 、__
__,ィ ヽ. `ヽ.
, '⌒Y / 、ヽ ヽ ヽ.
/ / i /l/|_ハ li l i li ハ
. // 〃 /l i|j_,.//‐'/ lTト l、l j N i |
{イ l / l li //___ リ_lノ lル' lハ. ソ ___◎_r‐ロユ
i| /レ/l l l v'´ ̄ , ´ ̄`イ !| ll,ハ └─‐┐ナ┐┌┘ _ ヘ____
ハ| ll∧ハヽ ト、 '''' r==┐ '''' /l jハ| ll ll /./┌┘└┬┘└┼────┘ロコ┌i
〃 ‖ レ'¨´ヽiへ. _ 、__,ノ ,.イ/|/ ノ ll l| </  ̄L.l ̄ ̄L.lL.! ┌┘|
ll ll { ⌒ヽ_/ } ー‐<.__ ′ l| ‖
‖ ‖ ヽ, /、 〈 |:::::::| `ヽ ‖
‖ {. ハ ヽ Y`‐┴、::::v l ‖
‖ |iヽ{ ヽ_ゾノ‐一’::::ヽ. | ‖
‖ |i:::::`¨´-- :::......:...:.:.::.}| ‖
‖ |i::::::ヽ._:::_:::::::::::::::::::_ノ | ‖
‖ |i::::::::::::i___:::::::::::/ |
jj::::::::r┴-- `ー‐ '⌒ |
〃:::::::マ二 _,ノ
//::::::::::::i ー 一 '´ ̄::.
,','::::::::::::::i::::::::::::::::::::::i::::::ヽ
0780デフォルトの名無しさん
2007/06/30(土) 23:08:31悪い、俺、countの質問をした奴じゃないから。いつから俺がcountを質問した奴になったんだ?
俺はレベルは高くないけど一応工学部に所属していたことのある、プログラミングを
趣味で始めた程度のビギナー。分かる?それでも電子計算機について学んできたから
それなりに知識はあるわけ。まぁ、if文とかで使われる式の評価や真偽については
高校でならう命題や集合などの知識があれば出来ないことはないだろうけど
やっぱ大学レベルは必要だなw
0781デフォルトの名無しさん
2007/06/30(土) 23:09:280782デフォルトの名無しさん
2007/06/30(土) 23:11:07え?おまえ誰?
0783デフォルトの名無しさん
2007/06/30(土) 23:11:19ザクロちゃんは9才
バベルちゃんは何歳だろう
0784デフォルトの名無しさん
2007/06/30(土) 23:11:51countを知っている程度で、知らない奴にそこまで得意気になれるお前って、そうとうレベルが低いんだな・・・
分かるよ。要するにお前はあれだろ?自分が出来ることで、それが出来ない他人を見つけては
俺はすげー!お前よりできる!って自慢しに来る奴だろ?人それぞれ得意不得意はあるし
経験したしないの差はあるけどさ。1つだけ用いてそこまで得意気になれるあんたには脱帽したぜ。
高学歴高収入の奴を目の前にしても、そいつが出来ないことだけを用いて
自分はそいつより優勢だと感じたいんでしょうね・・・哀れ、チーン。
0785デフォルトの名無しさん
2007/06/30(土) 23:13:19あなたの所属していた工学部では、
全員ポインタをマスターしていたというわけで?
0786デフォルトの名無しさん
2007/06/30(土) 23:13:49そんな事くらいで得意げになるわけねぇじゃんw
0787デフォルトの名無しさん
2007/06/30(土) 23:18:03その検索したどこのサイトを見ても メモリのアドレス について語られています。
ポインタの前で用いられることのある * <これは間接演算子。まさか、ケツ穴だと思った?w
0788デフォルトの名無しさん
2007/06/30(土) 23:19:470789デフォルトの名無しさん
2007/06/30(土) 23:20:04所属だけなら、先生の秘書でも工学部に所属って言わない?
0790デフォルトの名無しさん
2007/06/30(土) 23:21:470791デフォルトの名無しさん
2007/06/30(土) 23:22:470792デフォルトの名無しさん
2007/06/30(土) 23:23:43http://www.geocities.jp/dondokodon41412002/
0793デフォルトの名無しさん
2007/06/30(土) 23:24:32いや、掛け算と思った、orz
メモリアドレスでも論理と物理あるだろ
0794デフォルトの名無しさん
2007/06/30(土) 23:26:41ネットのヘンな解説ばっかり見てるなよ。
0795デフォルトの名無しさん
2007/06/30(土) 23:30:010796デフォルトの名無しさん
2007/06/30(土) 23:30:18たしかに実体としてはメモリアドレスになっている実装ばかりなんだが、
C/C++の標準規格の文書では、ポインタについての部分でもそれ以外でも、
メモリアドレスという概念には一切言及されていない。
(例外があるとすれば単行&演算子の名称がアドレス演算子ということだが、それも名称だけ)
だからポインタ=アドレスと言うとみんなよってたかってぼこぼこにしてくる。
0797デフォルトの名無しさん
2007/06/30(土) 23:31:10http://www.geocities.jp/dondokodon41412002/
0798デフォルトの名無しさん
2007/06/30(土) 23:31:190799デフォルトの名無しさん
2007/06/30(土) 23:34:260800デフォルトの名無しさん
2007/06/30(土) 23:35:44どうでもいいけど、ここだけ「だろ」って語尾。つまり同意を求めちゃっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
なんつーか、毎週ご苦労さん。
0801デフォルトの名無しさん
2007/06/30(土) 23:36:38ポインタそのものが使いこなせているわけでもないのに知ったかぶるからたたかれるんだよ。
何が間違っているかすら説明していないし、本質を説明してないだろ、お前は。
メモリ上のアドレスを知れ
0802デフォルトの名無しさん
2007/06/30(土) 23:36:56がんばって、はやくわれわれを「あっ」といわせてください^^
0803デフォルトの名無しさん
2007/06/30(土) 23:38:190804デフォルトの名無しさん
2007/06/30(土) 23:38:52良いのかい?
俺はノンケでも喰っちまう男だぜ?
0805デフォルトの名無しさん
2007/06/30(土) 23:40:40何が言いたいんだ?事実だぞ?そういうことでたぶらかして何が楽しい?
んじゃ間違っているなら間違っている点を指摘しろよ?
逆にさぁ、お前らの屁理屈を通したら、ポインタはアドレスを示すものではない?
ってことを正当化させて相手を完全に否定しようとしているとしか思えない。実にきめぇ。
自分のほうがより理解している、知っている!って誇張したいんだろ。
とりあえず検索するなり、ポインタを扱ってみりゃ誰だってわかる。
メモリ上にデータが一時的に書き込まれる、それを参照してプログラムは
演算処理をしている。そんなの大学じゃ普通に習うぞ?
あとな、なんだかんだ言ってもそういう基本原理を人間が都合よく 実装 して
仮想して実際にあるように装っているわけだろ?お前、画面に映った美女を
実際にいるかのように思っているエロゲヲタだろ?ぼくちんの○×ちゃんは
画面に映っているだけの存在じゃない、俺にとっては妻だとかなw
とにかく、お前らしつこいくらい ポインタ について噛み付いてくるくせに
お前らこそポインタについて説明はなんらしていないじゃん。
そういう説明が不適切だ!不適切になることもある、程度しか言えないなら
結局お前らがポインタについて理解していないだけ。
それから、そういう説明をしているサイトや学校に対してお前らは抗議してこい。
そしてお前らの糞な説明をした講義でもしてこいw
0806デフォルトの名無しさん
2007/06/30(土) 23:41:37というか人の話聞いてないな、お前。
0807デフォルトの名無しさん
2007/06/30(土) 23:42:40「最後に」といいつつ、見てることは見てるんだな。
ああ、最後にと言ったやつとは別人ってこと?
0808デフォルトの名無しさん
2007/06/30(土) 23:43:10メンバ変数ポインタとかの構造を理解してから出直してきてくれ。
0809知ったかの勝ち逃げパターンw
2007/06/30(土) 23:43:16>実態はメモリ上のアドレスを示すもんだろ
どうでもいいけど、ここだけ「だろ」って語尾。つまり同意を求めちゃっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
自信がないことがばればれ。だからもう、後は必死になって取り繕うしかなくなっている。
お前が必死になってそれは違う、違う、そうじゃな〜〜いって言うだけで
まったく説明が出来てないバカwwww
とりあえず、メモリ上のアドレスを示すものじゃないならそれについて説明を求めまーーすwwww
悪いがポインタについてと、ポインタを扱うとはまた別物だから。
それから、ポインタだけで話をするなよ。言葉そのものが意味するものは pint の名詞 pointer だから。
http://dictionary.goo.ne.jp/search.php?MT=pointer&kind=ej&mode=0&base=1&row=0
何かを指し示すものには変わりはない。電子計算機上においては、メモリのあるアドレスを指し示している
ことには変わりはないんだし。やれやれ、バカに理解させるってのが無理だってことがヨークわかった。
所詮低学歴ってこの程度の屁理屈でしか言い返しができないんだよな。それも正当性のない屁理屈w
0810デフォルトの名無しさん
2007/06/30(土) 23:43:480811デフォルトの名無しさん
2007/06/30(土) 23:45:34http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29
> ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、
> その位置を表現する変数の事をいう。有名な例としてはC/C++でのメモリアドレスを表すポインタが
> 挙げられる。
はい、何も間違えていませんね。いい加減言葉は言うまでもないが、そのものの本質を
理解する頭を持ちましょうね。あっ、そういう頭がないからお前らは低学歴のくせして
ここで質問する奴を叩いて、自分はそいつより上だと自己満足することを求めているのかw
低収入の頭の悪い奴がとる態度とそっくりだ。現実はそう甘くない。お前ら低収入は
お金に困らない人が普通にやっていることさえもまともに出来ないから考え方もおかしくなるんだよなw
0812デフォルトの名無しさん
2007/06/30(土) 23:47:31「挙げられる。 」だよ。
例として 挙げられてるだけであって、それがすべてじゃない。
お前の知識は、全体集合の中の、よく挙げれられる一部の例だけしかないってこと。
残念だったな。
0813デフォルトの名無しさん
2007/06/30(土) 23:49:36ん?ひょっとして理解できてないだけだったりするのかな。
0814デフォルトの名無しさん
2007/06/30(土) 23:50:02struct A { int a; };
void show(int (A::*mp)) {
int* p = reinterpret_cast<int*>(&mp);
std::cout << *p << std::endl;
}
int main() {
int (A::*mp1) = &A::a;
int (A::*mp2) = NULL;
show(mp1);
show(mp2);
}
これ実行してみ。
何て出力されるか? それはメモリ上のアドレスか?
0815デフォルトの名無しさん
2007/06/30(土) 23:51:17逆ギレしつつもcountを教えてもらった人?
自分で実装してみろ、って言った人?
0816デフォルトの名無しさん
2007/06/30(土) 23:53:27うそばっかりだから。だまされるなよ。
0817デフォルトの名無しさん
2007/06/30(土) 23:53:57764 名前:デフォルトの名無しさん 投稿日:2007/06/30(土) 22:48:55
>>761
メモリ上のアドレスって何?
0818デフォルトの名無しさん
2007/06/30(土) 23:55:18アッー!
>>816
なんかメモリリークを軽視してる奴が多いよな
0819デフォルトの名無しさん
2007/06/30(土) 23:55:49あれあれぇ〜、ここでもポインタについて アドレス を用いて説明してまちゅねぇ。
さぁ、抗議と講義をしてきんしゃい、メモリのアドレスも知らなかった君(プ
0820デフォルトの名無しさん
2007/06/30(土) 23:55:53論理アドレスと物理アドレスのどっちなのかって聞いてんだろ。多分。
0821デフォルトの名無しさん
2007/06/30(土) 23:56:55おまえ、>>814 が何やってるか分かるか?
0822デフォルトの名無しさん
2007/06/30(土) 23:57:57自分ですれば?
0823デフォルトの名無しさん
2007/06/30(土) 23:58:510824デフォルトの名無しさん
2007/07/01(日) 00:00:06#include <stdio.h>
int main(void) {
int *a,b=3;
printf("b : %p / %d \n",&b,b);
printf("a : %p / %d \n",a,*a);
a=&b;
printf("a : %p / %d \n",a,*a);
return 0;
}
0825デフォルトの名無しさん
2007/07/01(日) 00:00:540826デフォルトの名無しさん
2007/07/01(日) 00:00:58いいから >>814 を実行してみろや。
それとも C++ スレで stdio.h とか書いてるお前には理解できないか?
0827デフォルトの名無しさん
2007/07/01(日) 00:02:080828デフォルトの名無しさん
2007/07/01(日) 00:04:470829デフォルトの名無しさん
2007/07/01(日) 00:04:56はぁ?お前今の流れ読めてねーだろ?ポインタの話だろ、ポ・イ・ン・タ。
わかるぅ?ポインタの実体がアドレスだってのはわかっているし
そのアドレスに記録されているデータを参照するのに使われている間接演算子についても
>>824で証明済み。まぁ、恐らくアホは b の前の & が理解できないだろうけどなw
0830デフォルトの名無しさん
2007/07/01(日) 00:05:460831デフォルトの名無しさん
2007/07/01(日) 00:06:19テストプログラムとは言え
初期化してないポインタで参照するのは感心せんなぁ・・・
0832デフォルトの名無しさん
2007/07/01(日) 00:07:44偉そうに答えにもなっていない答えをレスしていたなんて・・・結局、どこへいっても、
自分より劣る奴を見下したい奴はいるんだね。
0833デフォルトの名無しさん
2007/07/01(日) 00:08:15ポインタの実体をアドレスと呼ぶのは確かだが、
それは必ずしもメモリアドレスとは限らない。
もっと抽象化された存在だ。
それは >>814 で証明済み。
どこに突っ込まれてるのか理解してないようだな。
0834デフォルトの名無しさん
2007/07/01(日) 00:08:33>>824
テストプログラムとは言え
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
↑やっちまったな。ポインタについて理解していない証拠が出ました。はいさようならw
0835デフォルトの名無しさん
2007/07/01(日) 00:08:42くだらないHPを参考に挙げまくってた流れからすれば妥当だ。
今お前に必要なのは、そこら辺の解説ページではなくC++の規格だよ。
0836気まぐれアナスイ
2007/07/01(日) 00:09:12error.出力を出さずに実行で、文字列が変わらずに
その後書き換えを試そうとするとcuerser.を移動すると
文字化けが生じる状態はどの様な状態ですか?
0837デフォルトの名無しさん
2007/07/01(日) 00:09:12C++ではなくCの話だが、許してくれ。
http://www.kouno.jp/home/c_faq/c5.html#17
> 5.17:
> ヌルポインターに0以外の値を使用するマシンや、
> 異なる型のポイン ターに異なる内部形式を持つマシンは本当に存在するのか
(中略)
> Symbolics社のLISPマシンは、タグ付きアーキテクチャなので、
> そもそもポインターを数値で表すという通常の概念さえ持たない。
> (基本的には、存在しないのハンドル)をCのポインターとして使っている。
ちなみに、最後の行は日本語でおkだが、原文だとこうなっている。
it uses the pair <NIL, 0> (basically a nonexistent <object, offset> handle) as a C null pointer.
0838デフォルトの名無しさん
2007/07/01(日) 00:09:31int *a,b=3;
printf("b : %p / %d \n",&b,b);
printf("a : %p / %d \n",a,*a); ←←←←←←←←←←←←←
0839デフォルトの名無しさん
2007/07/01(日) 00:10:06> どこに突っ込まれてるのか理解してないようだな。
そのままそっくり返します。ポインタについて理解していないのはお前の方。
↓ポインタを数値データと思っていた勘違いの証拠
初期化してないポインタで参照するのは感心せんなぁ・・・
はい、以後放置よろw
0840デフォルトの名無しさん
2007/07/01(日) 00:10:25みたいな書き方って今も普通なのか?なんか10年ぐらい前に
みたっきりで今みねーような気がするんだが
0841デフォルトの名無しさん
2007/07/01(日) 00:10:53boost とかで使われてる
0842デフォルトの名無しさん
2007/07/01(日) 00:10:55志村ー、スレタイスレタイ。
他所行ってらっしゃい。
0843デフォルトの名無しさん
2007/07/01(日) 00:11:45これはひどい・・・
まさかここまで基地外とは。
0844デフォルトの名無しさん
2007/07/01(日) 00:11:53くだらないとは失礼だろ
ttp://www.sgnet.co.jp/c/6-4.htm
これもアドレスについて話が出ている
0845デフォルトの名無しさん
2007/07/01(日) 00:13:01>int *a,b=3;
>printf("b : %p / %d \n",&b,b);
>printf("a : %p / %d \n",a,*a);
*aを表示させようとしている時点で
どこのアドレスを指し示しているのか未定義。
つまり、定義した時に入っているゴミデータを参照している。
基本的にこういうのは忌避するもんだけど。
0846デフォルトの名無しさん
2007/07/01(日) 00:13:04とか書いたら保守するとき大変じゃね?
1個や2個ならいいけどこれがいっぱいあるとさ...
0847デフォルトの名無しさん
2007/07/01(日) 00:13:33>>824
テストプログラムとは言え
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
初期化してないポインタで参照するのは感心せんなぁ・・・
ttp://www9.plala.or.jp/sgwr-t/c/sec10.html
ここでもポインタについてアドレスの話が・・・ざわざわざわっ
0848デフォルトの名無しさん
2007/07/01(日) 00:14:12人間、抽象的なことより具体的なことのほうが理解しやすいからね。
だからメモリアドレスの話をするのが手っ取り早い。
でもそれは、ポインタを理解するための足がかり。
0849デフォルトの名無しさん
2007/07/01(日) 00:14:51メンバポインタってクラスの先頭からのオフセットなんでしょうか?
0850デフォルトの名無しさん
2007/07/01(日) 00:15:05知っていてわざとやっているに違いないだろ。
汲み取ってあげようよ、その必死な意図を。
0851デフォルトの名無しさん
2007/07/01(日) 00:16:20すまん、俺、メモリよくわからんが、お前の言っているメモリは何を言ってる
たとえば、ハードのメモリ(の論理アドレス)なのか?
0852デフォルトの名無しさん
2007/07/01(日) 00:17:04運が悪いと落ちることもあるんだがな・・・。
0853デフォルトの名無しさん
2007/07/01(日) 00:18:30メンバ変数ポインタはオフセットで実装してある場合が多いだろうね。
だからヌルポインタのビット表現が 0 では困るということで、
ヌルポインタのビット表現が 0 にならない例の 1 つでもある。
0854デフォルトの名無しさん
2007/07/01(日) 00:19:49趣味グラマとしてはそんくらいの理解で十分だろう。
パソヲタに説明するにはちょうどいいしな。
結局は正しい定義を言われて素直にへぇボタン押さなかった必死な子が悪い訳だけど。
0855デフォルトの名無しさん
2007/07/01(日) 00:20:25そういう実装になっていることが多いし、それが率直な実装だと思う(俺の主観だが)。
>>850
今はそういう問題ではないと思ってあげようよ。824がかわいそうだ。
0856デフォルトの名無しさん
2007/07/01(日) 00:20:34普通は typedef するだろうけど、
まあこのプログラムでは
ポインタであるということが目立った方がいいんじゃないかな。
0857デフォルトの名無しさん
2007/07/01(日) 00:20:39そいつは俺も知らなかったな。
やたら更新頻度高くなってからヲチしていたが
初めて参考になった。今後気を付けるわ。
0858デフォルトの名無しさん
2007/07/01(日) 00:22:07メンバ変数のアドレスを入れられた普通のポインタとは別だかんね。
念のため。
0859デフォルトの名無しさん
2007/07/01(日) 00:22:450860デフォルトの名無しさん
2007/07/01(日) 00:23:57多重継承したクラスのメンバ関数ポインタの話でもするか?
0861デフォルトの名無しさん
2007/07/01(日) 00:27:32ポインタについて実体がアドレスということを否定した香具師は反省しろ
↓の実行結果が物語っているものがわからんのなら、マジでプログラミングなんてやめろ。
#include <iostream>
using namespace std;
int main() {
int *a,b=3;
cout << "a : " << a <<endl;
cout << "*a : " << *a <<endl;
cout << "b : " << b <<endl;
cout << "&b : " << &b <<endl;
a=&b;
cout << "after a=&b " <<endl;
cout << "a : " << a <<endl;
cout << "*a : " << *a <<endl;
return 0;
}
0862デフォルトの名無しさん
2007/07/01(日) 00:27:50それって本当にメンバ変数ポインタ取るために使ってる?
メンバ関数ポインタのために使ってるのがほとんどじゃね?
0863デフォルトの名無しさん
2007/07/01(日) 00:28:240864デフォルトの名無しさん
2007/07/01(日) 00:29:44>>845
本当にお前やめろ
0865デフォルトの名無しさん
2007/07/01(日) 00:29:47そうやって直接的ではない話で相手がわかってないと思われることを炙り出そうとするのが
お前らのやり方なんだよな。しかし、それをやった自分の方がまったくの無知だったというオチだろ。
大学でな、論理回路やメモリに関する仕組みがわかる実験くらいやるだろ。
お前、KUE-CHIP2 って使ったことあるか?参考までにどういうものか示しておくが。
ttp://www.astem.or.jp/rdt/kuechip2.html
0866デフォルトの名無しさん
2007/07/01(日) 00:31:22本当にお前がやめろ、痛すぎ。メモリのアドレスすら知らないバカが
電子計算機の基本部分にかかわることを無視して、コードだけしか見えていない
仕組みも知らん奴が口出しするなよ。
0867デフォルトの名無しさん
2007/07/01(日) 00:31:23831みたいな余計なあほを露出させるほどの隙があるというかなんというか
0868デフォルトの名無しさん
2007/07/01(日) 00:31:57boost::lambdaで多用するよ。
メンバ変数へのアクセスは基本的にlambda::bindへ
メンバ変数ポインタとインスタンスを渡す形になる。
0869デフォルトの名無しさん
2007/07/01(日) 00:32:05A { void f() {} };
ってのがあったときに
void (A::*mfp)(void) = &A::f;
ってして
これをint型のポインタにして出力しようとしても駄目だった
あとstatic void f();の時はメンバポインタすら作れなかった
うーんややこしいぜ
0870デフォルトの名無しさん
2007/07/01(日) 00:35:15>駄目だった
具体的に書こう。何が駄目だったの?当然static_castじゃ無理だよ。?
>static void f();
普通の関数ポインタしか取れないよ。
呼ぶのにクラスのインスタンス不要なんだから。
0871デフォルトの名無しさん
2007/07/01(日) 00:35:51コードを知っているだけで理解した気になっているのか。もう一度お前らに課題を課す。
汎用電子計算機の五大装置について述べよ。んじゃな、あばよ、下を見て叩くだけしか出来ない
低レベルな香具師ら。
0872デフォルトの名無しさん
2007/07/01(日) 00:36:19printf("%p %p %p %p\n", &A::f,-1,-1,-1)とか。
(正確には、%pはsizeof(&A::f)/sizeof(void*)個だけ要るけど。)
0873デフォルトの名無しさん
2007/07/01(日) 00:36:52これ使ってその辺にある戻り値voidの関数を悉くスレッドに出来るのが
boost::threadライブラリで、こいつを参考にしてATLと上手く連携が取れるwindowAPI版作って見ようと思ってたり
0874デフォルトの名無しさん
2007/07/01(日) 00:37:50多重継承してたら 8 とかになってたりするんだよな。
メモリアドレスにさらに+αが存在してる。
0875デフォルトの名無しさん
2007/07/01(日) 00:38:27中学の時に習ったけど、知ってるからどうなのよ、って話だな。
0876デフォルトの名無しさん
2007/07/01(日) 00:39:01そこら辺はD&Eとかに書いてありそうだな。持ってる人ヨロ
0877デフォルトの名無しさん
2007/07/01(日) 00:40:50メンバ変数へのポインタは整数型へすら変換することができないことになっている。
ただ、extern "C"を使ったり可変長引数を使えばC++コンパイラを出し抜けるはず。
もっとも、メンバ関数へのポインタは、860も少し指摘しているが、
継承やら仮想関数の場合やらを考慮しないといけないので、
大抵普通のポインタよりサイズが大きい場合がある。
静的メンバ変数は、普通の関数と同じで、ただの関数へのポインタになる。
>>871
入力装置、出力装置、演算装置、制御装置、記憶装置だよな。
順番がおかしいかもしれないが。
そんでもってC/C++の標準規格は、電子計算機の原理なんて
どうでもいいようになっているとか言っていい?
0878デフォルトの名無しさん
2007/07/01(日) 00:41:09GCC だと仮想継承してても 8 なんだよな。
最新バージョンではまた違ってるかもしれんが。
0879デフォルトの名無しさん
2007/07/01(日) 00:44:280880デフォルトの名無しさん
2007/07/01(日) 00:44:550881デフォルトの名無しさん
2007/07/01(日) 00:45:34だから、任意のパラメータを取る関数なりなんなりに
直接渡すことはできないんだな。
0882デフォルトの名無しさん
2007/07/01(日) 00:46:36禿が言ってるのは、「昔はメンバ関数ポインタなんかなかった。
ところで、無理矢理、thisを第一引数にとる関数ポインタにキャストして
使ってる香具師がいて、こういうのは禁止させたいから、
あたらしくメンバ関数ポインタってのを作ったよ」
ってだけ。
0883デフォルトの名無しさん
2007/07/01(日) 00:46:43メンバへのポインタという説はあるが、実装についての話は特にない。
0884デフォルトの名無しさん
2007/07/01(日) 00:46:46extern "C" {
struct A { void f(){} static void sf(){} };
}
int main() {
void (A::*mpf)(void) = &A::f;
void (*sf)(void) = &A::sf;
std::cout << reinterpret_cast<int*>(mpf);
}
とりあえずコンパイラ(cl.exe)を出し抜くのは無理でした
0885デフォルトの名無しさん
2007/07/01(日) 00:48:29this をレジスタ渡しすることもあるしな。
0886デフォルトの名無しさん
2007/07/01(日) 00:49:13>>872
0887デフォルトの名無しさん
2007/07/01(日) 00:49:46俺が考えたのは分割コンパイル。
a.cppでextern "C" void hoge(void (someclass::*)());と宣言して、
b.cppでextern "C" void hoge(long pmf) {}なんて具合に定義するという感じ。
0888デフォルトの名無しさん
2007/07/01(日) 00:51:29制御
主記憶装置内に保存されているプログラムを読み込み、読み込んだプログラムに従ってコンピュータの各装置に動作を指示します。
演算装置
制御装置の命令に従って、データに対し演算処理などを行います。制御装置と演算装置を合わせて
CPU(Central Proccessing Unit: 中央処理装置)といいます。
記憶装置
記憶装置には主記憶装置と補助記憶装置があります。主記憶装置はCPUが読み込むプログラムやデータを保存しておき、
CPUの命令に応じてデータを各装置に送ります。主記憶装置はメインメモリとも呼ばれます。
主記憶装置は大きな容量のデータは保存することができず、またコンピュータの電源を切るとデータは失われてしまいます。
このような主記憶装置の不便なところを補う役割を果たすのが補助記憶装置です。主記憶装置は補助記憶装置に対して、
必要に応じてデータの書き込みまたは読み込みを行います。
(例) メインメモリ、ハードディスク、フロッピーディスクなど
入力装置
主記憶装置にデータを入力するための装置です。
(例) キーボード、マウス、スキャナなど
出力装置
主記憶装置から送られてきたデータを文字や画像として表示する装置です。
(例) ディスプレイ、プリンタなど
0889デフォルトの名無しさん
2007/07/01(日) 00:54:50#include <stdio.h>
ってそんなにダメなの?
「これ書くような奴は頭悪い」とか思われるようなものならやめる
0890デフォルトの名無しさん
2007/07/01(日) 00:55:55この場合、識別子が std 名前空間内に入ってる。
0891デフォルトの名無しさん
2007/07/01(日) 00:57:440892デフォルトの名無しさん
2007/07/01(日) 00:58:16PGになってから使ったこと無いような言葉ばかりだな
学生ってそんな言葉で電子計算機の話をしてるのか(電子計算機という言葉も、前に使ったの何時かな)
0893デフォルトの名無しさん
2007/07/01(日) 01:01:22<cstdio>
namespace std
{
int printf(const char*, ...);
//..
}
<stdio.h>
#include <cstdio>
using std::printf;
//..
現実
<stdio.h>
int printf(const char*, ...);
//..
<cstdio>
#include <stdio.h>
namespace std
{
using ::printf;
//..
}
OTL
0894デフォルトの名無しさん
2007/07/01(日) 01:03:35まあ、神経質に分けてくれてるコンパイラもあるかもしんないよ。
0895デフォルトの名無しさん
2007/07/01(日) 01:05:37なるほど…意味分かったぜ
0896デフォルトの名無しさん
2007/07/01(日) 01:06:29出来たけどなんか4263941とかおかしい値になった
やり方がおかしいのかなぁ…
0897デフォルトの名無しさん
2007/07/01(日) 01:06:56普通のアドレス値じゃね?
おかしい値か?
0898デフォルトの名無しさん
2007/07/01(日) 01:07:27⊂( ゚д゚ )
ヽ ⊂ )
(⌒)| ダッ
三 `J
0899デフォルトの名無しさん
2007/07/01(日) 01:07:47ワロタ。
>>889 >>893を見た後なら気にせず使えといってみる
0900デフォルトの名無しさん
2007/07/01(日) 01:08:47cstdio で慣れた方がいいと思うよ。
0901デフォルトの名無しさん
2007/07/01(日) 01:14:43今更だけど、このスレにいるような人間は、
電子計算機の原理や五大機能より、チューリングマシンのほうが馴染み深いのかもしれない。
0902デフォルトの名無しさん
2007/07/01(日) 01:19:14確かにポインタの実体はアドレスってのは不適切とも言えるだろうけど。
ん?もうポインタの話は終わり?そりゃすまんこった
0903デフォルトの名無しさん
2007/07/01(日) 01:20:50マウスのポインタって言ったらどうよ?矢印って言う?そりゃOSが便宜上
矢印の形をしたものをマウスのポインタとして用いているだけであって
ポインタって言ったら そこを指し示しているもの であって、さしている場所が実体じゃないよね?
そういう説明ならおkか?
0904デフォルトの名無しさん
2007/07/01(日) 01:21:43& だってアドレス演算子って呼ぶし。
でも、メモリアドレスとは限らないけどね。
0905デフォルトの名無しさん
2007/07/01(日) 01:22:02ってか、混乱してきた。ポインタの話すまそ。
0906デフォルトの名無しさん
2007/07/01(日) 01:24:43なるほど。それでいこう。スレ違いすまそ。
0907デフォルトの名無しさん
2007/07/01(日) 01:25:50struct A { int x; void g(){}; void f(){} };
extern "C" { void hoge(void (A::*)(void)); }
int main() {
void (A::*mpf)(void) = &A::f;
void (A::*mpg)(void) = &A::g;
hoge(mpf); hoge(mpg); }
// test2.cpp
#include <iostream>
extern "C" { void hoge(long* pmf) { std::cout << pmf << '\n'; } }
で一応いけましたが、オフセットじゃなくて絶対座標が出ちゃいました
インスタンスが無いのに?って思ったんですがそもそもどういう形で
コードになるかまだよく分からんのでとりあえずおkってことで
助言くれた人tnxc
0908デフォルトの名無しさん
2007/07/01(日) 01:27:300909デフォルトの名無しさん
2007/07/01(日) 01:36:380910デフォルトの名無しさん
2007/07/01(日) 01:37:380911デフォルトの名無しさん
2007/07/01(日) 01:46:26まずいか?住所の番地って言わない?○○町の3−2−4みたいな
その数字の部分って漢字で表現したんだが・・・
0912デフォルトの名無しさん
2007/07/01(日) 01:47:280913デフォルトの名無しさん
2007/07/01(日) 02:44:36ポインタはアドレスを指しているんだよ
その先にあるものシラネ。ひょっとしたら、遠く離れたお前のPCのHDDかもしれんぞ。
覗いたら、お前のプライベートエロ画像丸見えだった。だから、ポインタの実体には注意汁、テヘ
0914デフォルトの名無しさん
2007/07/01(日) 05:33:53ポインタ←間接参照だろう?
アドレス云々じゃなくて。
間違っていたらつっこみよろしく。
0915デフォルトの名無しさん
2007/07/01(日) 06:27:03ポインタは書き換えが可能。
演算も出来る。
ちなみに、間接参照専用の機能が参照という機能ですよ。
0916デフォルトの名無しさん
2007/07/01(日) 06:32:05> アドレス云々じゃなくて。
またそれか・・・ポインタが持つ情報はアドレスを示すためのものだろ?
番地が表示されるソースが過去ログに出てるでしょうに。
0917デフォルトの名無しさん
2007/07/01(日) 07:03:43ああ、すまんすまん。
書き換え云々もコミで書いとったが、詳しく書いていない俺が悪いな。申し訳ない。。
参照専用機能は知らんかったがいる人にはいるのかもな。
注意すればいいだけのような気もするが。
>>916
へ?意味が解らんというか無意味な議論にならんか?
>>またそれか・・・ポインタが持つ情報はアドレスを示すためのものだろ?
示しただけでは意味が無いんじゃない?
アドレス先の内容を加工出来ないと・・・。
と思うんだが。
0918デフォルトの名無しさん
2007/07/01(日) 07:17:50ちなみに参照の利点。
・普通の変数と同じ様に使える(修飾子要らず)。
・ポインタの変わりに参照を引数として渡せる。
・安全性が高い。
そして欠点。
・書き換えが出来ない。
・ポインタとは違うプログラムを書かなければならない(*を外す)。
0919デフォルトの名無しさん
2007/07/01(日) 07:18:440920デフォルトの名無しさん
2007/07/01(日) 07:20:03> 示しただけでは意味が無いんじゃない?
いや、だから・・・(絶句)。ポインタをどう使うか?ではなくて
ポインタそのものが何か?って話なんだが・・・ OTL
0921デフォルトの名無しさん
2007/07/01(日) 07:28:21目的と手段を混同してない?
ポインタがアドレスです。というのは、解ってるし。
それを利用するのも解るけどね。
一応、なんちゃって高級言語なんだからあまり意識しすぎない方がいいと思うんだが。
0922デフォルトの名無しさん
2007/07/01(日) 07:32:01過去ログのソースに参照できるものあり。
0923デフォルトの名無しさん
2007/07/01(日) 07:34:15解っている人間に言っているのか、解っていない人間に向かって言っているのか解らん。
0924デフォルトの名無しさん
2007/07/01(日) 07:34:430925デフォルトの名無しさん
2007/07/01(日) 07:37:04賛成。一応、ふざけていても高級言語なんだから。
0926デフォルトの名無しさん
2007/07/01(日) 07:42:460927デフォルトの名無しさん
2007/07/01(日) 09:09:42ポインタは、理解出来ているが構造体とか理解出来ていない俺がいる。
ポインタ←間接参照だろう?
アドレス云々じゃなくて。
間違っていたらつっこみよろしく。
↑こいつわかってないだろ?
0928デフォルトの名無しさん
2007/07/01(日) 09:10:180929デフォルトの名無しさん
2007/07/01(日) 09:18:27ポインタだけ理解できる訳無いじゃん
0930デフォルトの名無しさん
2007/07/01(日) 09:28:470931デフォルトの名無しさん
2007/07/01(日) 09:42:07アセンブラだとどうやって表現してるの?
0932デフォルトの名無しさん
2007/07/01(日) 10:26:320933デフォルトの名無しさん
2007/07/01(日) 10:27:430934デフォルトの名無しさん
2007/07/01(日) 11:01:36ん〜>>914だけど、解っているんだから仕方ない。
概念的には、ポインタ内のアドレス先にアクセスする。という事だろう?
それ以上の事は必要な時に覚えればよかんべ。と思っている。
俺の場合、所詮、趣味だしな。
0935デフォルトの名無しさん
2007/07/01(日) 11:04:380936デフォルトの名無しさん
2007/07/01(日) 11:05:510937デフォルトの名無しさん
2007/07/01(日) 11:07:23じゃあ、>>914トリオでも組むか?
面倒くせー。
0938デフォルトの名無しさん
2007/07/01(日) 11:08:13出た方が便利だろうに。
0939デフォルトの名無しさん
2007/07/01(日) 11:09:07密接な関係があるのにポインタだけ理解ってのはねーよ。
ベクトル分かんないが数学マスターしたぜ!、みたいな感じ。
昨晩の害吉程度の知識しか持ってないと思う。
0940デフォルトの名無しさん
2007/07/01(日) 11:11:55大体そういう細かいところは躓いた時に必死で調べて理解するもんだし
最初からそんな細かいところまでやってたらすぐに挫折するぜ
0941デフォルトの名無しさん
2007/07/01(日) 11:19:05>>914のその一だが。
いや、俺C++を理解したとは書いていないから、勘違いされても困る。
勉強中なんだ。
ポインタは解っている。ほかは、おいおい解るかもしらん。
その程度だって。
0942デフォルトの名無しさん
2007/07/01(日) 11:22:31動的確保した構造体のポインタの動的多次元配列とかされると
頭がパニくってエラー多発させちゃいます
0943デフォルトの名無しさん
2007/07/01(日) 11:26:35いや要らないと俺は思っているんだけど。
0944デフォルトの名無しさん
2007/07/01(日) 11:27:360945デフォルトの名無しさん
2007/07/01(日) 11:32:580946デフォルトの名無しさん
2007/07/01(日) 11:41:540947デフォルトの名無しさん
2007/07/01(日) 14:47:030948デフォルトの名無しさん
2007/07/01(日) 14:48:39強いて言えば糞GPLだけは選ぶなってことだけだな。
あとはいくつか公開されてるライブラリ眺めて
ドキュメントの書き方とかまねてみればよし。
0949デフォルトの名無しさん
2007/07/01(日) 15:07:34どうもです。
いろいろなライブラリを参考にして真似ようと思います。
0950デフォルトの名無しさん
2007/07/01(日) 16:51:530951デフォルトの名無しさん
2007/07/01(日) 16:58:290952デフォルトの名無しさん
2007/07/03(火) 15:31:240953デフォルトの名無しさん
2007/07/03(火) 15:39:440954デフォルトの名無しさん
2007/07/03(火) 23:51:18ソースコードを右からうけて左にバグつきで受け渡す。
0955デフォルトの名無しさん
2007/07/04(水) 06:58:08バグは取り除いて右に戻してください、おながいします。
0956デフォルトの名無しさん
2007/07/04(水) 15:00:250957デフォルトの名無しさん
2007/07/04(水) 15:43:46#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[]){
if(argc!=2)return 0;
fstream fp(argv[1],ios::in);
if(!fp)return 0;
string str;
while(!fp.eof()){
fp >> str;
cout << str<<endl;
}
return 0;}
●入力ファイル
(名詞 (普通名詞 ((読み しめきり)(見出し語 〆切 (しめ切 1.6) (しめきり 1.6)))))
●出力
(名詞
(普通名詞
((読み
しめきり)(見出し語
〆切
(しめ切
1.6)
(しめきり
1.6)))))
0958デフォルトの名無しさん
2007/07/04(水) 15:45:11getline(fp, str); みたいなことがしたいの?
0959957
2007/07/04(水) 15:45:330960957
2007/07/04(水) 15:46:25サンクス それでいってみます
0961デフォルトの名無しさん
2007/07/04(水) 15:52:12cout << str<<endl; < 志村ー endl endl
0962デフォルトの名無しさん
2007/07/04(水) 15:58:59getline(fp, str);
i=str.find( "((読み ");
str=str.substr( i+7 );
cout << str;
0963デフォルトの名無しさん
2007/07/04(水) 16:04:39i が npos になってないかどうか確認とかした?
0964デフォルトの名無しさん
2007/07/04(水) 16:09:47#include <iostream>
#include <string>
using namespace std;
int main(){
string str="(名詞 (普通名詞 ((読み しめきり)(見出し語 〆切 (しめ切 1.6) (しめきり 1.6)))))";
int i=str.find( "((読み ");
str=str.substr( i+7 );
cout << str;
return 0;
}
0965デフォルトの名無しさん
2007/07/04(水) 16:13:38自己解決しました
出力が何も出ないので、はじめでエラーになっているのかと
おもったら一番最後で-1を返してきてエラーになっていました
0966デフォルトの名無しさん
2007/07/04(水) 16:31:34とりあえず LISP 風の文法解析したいのなら、
もうちょっと真面目に構文解析の勉強した方がいいと思う。
0967デフォルトの名無しさん
2007/07/04(水) 16:49:41コピペしたファイルだと
(名詞 (普通名詞 ((読み しめきり)(見出し語 〆切 (しめ切 1.6) (しめきり 1.6)))))
の
読みが検索できるのですが、元々の巨大なファイルだと失敗して-1を返します
文字コードが違うのでしょうか??どう対処したらいいでしょうか??
0968デフォルトの名無しさん
2007/07/04(水) 16:53:370969デフォルトの名無しさん
2007/07/04(水) 16:56:220970デフォルトの名無しさん
2007/07/04(水) 17:23:310971デフォルトの名無しさん
2007/07/04(水) 17:36:36誰かわかる人いたら教えてください。
お願いします。
0972デフォルトの名無しさん
2007/07/04(水) 17:37:28地道に変換する
0973デフォルトの名無しさん
2007/07/04(水) 17:50:37ひらがな、カタカナが混じっているやつを一度にひらがなへ変換できるやつはないですか
0974デフォルトの名無しさん
2007/07/04(水) 17:57:370975デフォルトの名無しさん
2007/07/04(水) 18:05:29サンクス
0976デフォルトの名無しさん
2007/07/04(水) 19:08:46サンクス 出来ました!
#include <iostream>
#include <string>
#include <winnls.h>
#pragma comment(lib, "kernel32.lib")
using namespace std;
string henkan(string text){
int size =text.size()*2+1;
char *s = new char[size];
LCMapString(GetUserDefaultLCID(),LCMAP_FULLWIDTH|LCMAP_HIRAGANA,
text.c_str(), text.size()+1,s,size);
string ss=s;return ss;
}
int main(){
string sr="ヘンカンシテミルヨ ドウナッタヨ???";
cout << henkan(sr)<<"\n";
}
0977デフォルトの名無しさん
2007/07/04(水) 19:14:280978デフォルトの名無しさん
2007/07/04(水) 19:17:31べんきょうしてみるお どうなったよ???
0979デフォルトの名無しさん
2007/07/04(水) 19:20:580980デフォルトの名無しさん
2007/07/04(水) 19:22:340981デフォルトの名無しさん
2007/07/04(水) 19:55:09coutで"あ"を10進数で表示させるにはどうしたらいいのでしょうか??
0982デフォルトの名無しさん
2007/07/04(水) 20:06:01string str="あい";
cout << (char)str[0]+((char)str[1]<<8);
0983デフォルトの名無しさん
2007/07/04(水) 20:13:250984工房初心者
2007/07/04(水) 20:16:15スーパーのレジの処理を行うプログラム。
品物の値段を入力していき、最後に0(ゼロ)を入力すると消費税を加算した金額を表示する。
さらに、預かり金を入力すると、お釣りを表示する。
<出力結果例>
いらっしゃいませ
XXX←値段を入力
小計=XXX円
XXX←値段を入力
小計=XXX円
0
小計=XXXX円 消費税XX円 合計金額XXXX円
お預かり金額(入力させる)
お釣り XXX円(お釣りは1万円何枚、5000円何枚などを表示させる)
0985デフォルトの名無しさん
2007/07/04(水) 20:17:19順序どおりのはずなのに値が離れています・・これであっているんでしょうか
string str="ぁあ";
cout << (unsigned char)str[0]+((unsigned char)str[1]<<8)<<"\n";
cout << (unsigned char)str[2]+((unsigned char)str[3]<<8)<<"\n";
40834
41090
0986デフォルトの名無しさん
2007/07/04(水) 20:18:51ヒント: ビッグエンディアン的に格納されている
0987デフォルトの名無しさん
2007/07/04(水) 20:22:44こっちにしたに良い具合になりましたよ サンクス!
cout << (unsigned char)str[1]+((unsigned char)str[0]<<8)<<"\n";
cout << (unsigned char)str[3]+((unsigned char)str[2]<<8)<<"\n";
33439
33440
0988デフォルトの名無しさん
2007/07/04(水) 21:02:22丸投げするつもりなら
C/C++の宿題を片付けます 92代目
http://pc11.2ch.net/test/read.cgi/tech/1183511364/l50
0989デフォルトの名無しさん
2007/07/04(水) 21:03:080990デフォルトの名無しさん
2007/07/04(水) 21:03:480991デフォルトの名無しさん
2007/07/04(水) 21:04:260992デフォルトの名無しさん
2007/07/04(水) 21:04:560993デフォルトの名無しさん
2007/07/04(水) 21:05:260994デフォルトの名無しさん
2007/07/04(水) 21:07:420995デフォルトの名無しさん
2007/07/04(水) 21:08:230996デフォルトの名無しさん
2007/07/04(水) 21:08:540997デフォルトの名無しさん
2007/07/04(水) 21:09:260998デフォルトの名無しさん
2007/07/04(水) 21:10:440999デフォルトの名無しさん
2007/07/04(水) 21:13:571000デフォルトの名無しさん
2007/07/04(水) 21:14:43>>943-945
このスレは質問スレと統合されます
次スレはありません
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。