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


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

スレを勃てるまでもないC/C++の質問はここで 10



1 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:35:36 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
pc12.2ch.net/test/read.cgi/tech/1240022781/

702 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:31:55 ]
サイズが分からないから

void func(float a[10]){
とかにすれば10って出るはず

703 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:34:47 ]
void func(float a[]){
としても

void func(float *a){

となるから

>>702
なんねーよばか

704 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:35:53 ]
ありがとう。float[10]ってしないと駄目なのか
でもそれだとint size=10;ってすることと一緒だから意味無いよね
受け取った配列の数によって処理を変えたいんですがどうすればいいですか?

705 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:38:08 ]
それこそマクロっぽくするべき
#define func(x) func_(sizeof(x)/sizeof(float))
void func_(unsigned size);


706 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:39:11 ]
>>704
二引数にして大きさを渡すする
ものすごい馬鹿みたいに思うかもしれんが
memsetやらfreadやらあるように領域の大きさを渡すのは普通

707 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:39:19 ]
void func(float *a, size_t n) { }
#define numberof(array) (sizeof(array)/sizeof(array[0]))
float foo[10];
func(foo, numberof(foo));

708 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:48:33 ]
ありがとうございます。サイズを引数として受け取るしかないんですね
当たり前なんだろうけど、これにはちょっとびっくり。
普通に分かるものだとばかり思ってた

709 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:27:30 ]
商業ソフトだとメモリ確保とかでガチガチにtry catchするんでしょうか?

710 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 01:10:01 ]
メモリ確保失敗はアプリレベルではどうにもならないからOSに例外投げてしまう。



という考え方もある。



711 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 01:14:08 ]
限界になる前に、そろそろメモリが足りません言い出すソフトもあるなぁ・・・・

712 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 02:22:58 ]
OSに例外投げたらどうなるんだ?つか、そんなことできるのか?

713 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 02:57:00 ]
他人のソースコードを読んでいってもさっぱり頭に入ってきません。
何かソースコードを読む際のポイントとかあるんでしょうか。

714 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 03:00:11 ]
コメントを読んだり、
読んでる関数の中身までは読まずに、大まかな流れを先に確認する。

715 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 03:37:32 ]
>>713
doxygen(Graphviz)で関係のグラフ化オヌヌメ

716 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:54:46 ]
テンプレートの型を一部の型に限定したい(たとえばunsignedの各種整数型のみ)場合は
template<typename T> class HOGE;
template<> class HOGE<unsigned char> {...;};
template<> class HOGE<unsigned short> {...;};
template<> class HOGE<unsigned long> {...;};
template<> class HOGE<unsigned int> {...;};
のように本体を書かずに、特殊化のほうをいちいち全部書くしかないんでしょうか?

717 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 11:53:12 ]
traits

718 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 12:20:01 ]
C++にて。
同じ副作用を保ったまま、式を文にすることは出来ます。
セミコロンを付ければ良いだけです。
 例 x=3ならx=3;とすればよい。
しかし同じ副作用を保ったまま、文を式にすることは出来ますか?
その際の式の値は何だって良いとして。
 例 while(flag){++x;} を ???


719 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 12:50:35 ]
>716
class の中身の方は型によって変わらないと仮定して、

#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_unsigned.hpp>

template<typename T, typename Enable = void>
class HOGE {};

template<typename T>
class HOGE<T, typename boost::enable_if<boost::is_unsigned<T> >::type>
{ // 何か
};

他の型にするなら boost::is_unsigned を適宜変更すれば OK。
型をべた書きするなら↓なんてのも可能。

#include <boost/mpl/set.hpp>
#include <boost/mpl/has_key.hpp>
template<typename T>
class HOGE<T, typename boost::enable_if<
  boost::mpl::has_key<
    boost::mpl::set<
      unsigned int,
      unsigned char
    >,T> >::type>
{ // 何か
};

中身も変わってくるなら >717 の通り traits でまとめる。

720 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:42:55 ]
>>718
そこを関数にする。
そうすれば関数呼出式になる。



721 名前:718 mailto:sage [2009/06/07(日) 14:31:24 ]
>>720
あーなるほど。
ありがとうございます。

722 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 18:39:05 ]
for each 処理を自前で作りたい。
Sentinelを付加する方法でなんかいいアイデアない?

723 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 18:43:09 ]
CかC++かくらい書け。
もっとも、C++ならSTL使え、だが。

724 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 18:57:23 ]
もっと洗練されたライブラリが必要だと思うんだ

725 名前:722 mailto:sage [2009/06/07(日) 19:00:27 ]
STL様 i=begin;while((function(i++),i)<=end); は偽物foreach

i=begin; end+1=eoloop; while(function(i++));
      ^^^^^^^^^←この部分

726 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:01:00 ]
一応Qt(C++用ライブラリ)にforeachはある
それを参考にしろとは言わんが

727 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:22:20 ]
インターフェースクラスがクールに感じたんだけど、これってなにかマイナス面はある?
今作ってるプログラムをこれ使って大幅に書き換えようかなと思ってるんだけど

728 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:39:06 ]
>>727
ソースコードの量が増える
保守するとき読めればいいが
そんな保証などない

将来性にかけて拡張性に優れた設計にするには
優れた設計能力が必要
後からの変更は1からのやり直し

729 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:48:20 ]
>>727
Qtのこと?
俺もQtの設計は美しいと思ってるし、
いまさらMFCやろうとしてる(まずいないがw)やついたらQtを紹介してる

マイナス面は、以前はGPLだったけどそれも変更になってLGPL
不満といえばdllのサイズぐらいかな?


マルチOSなのもおいしいところ

730 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:56:43 ]
>>725
std::for_eachもいやならBOOST_FOREACHはだめ?



731 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:31 ]
>>729
そのインターフェイスじゃないだろ

732 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:11:32 ]
QtってGUI専用だと勝手に思っていたが、
GUI以外の事も出来るの?



733 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:18:02 ]
>Qt

何故か俺の中で、
フジコフジオのイメージが払拭できない

734 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:21:55 ]
>>732
コンテナ、ネットワーク、XML、データベースとか一通り
機能制限はあるが組込み向けやXサーバーなしでもGUIが使えたり

735 名前:732 mailto:sage [2009/06/07(日) 22:24:51 ]
>>734
すげーー
マジかよ。

LGPLだと商用利用はしんどいか?
Staticリンクしちゃうとオープンソース強制だっけ?

736 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:55:36 ]
>>735
LGPLだと静的リンクはアウトだね
動的リンクなら商用非公開おk

737 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:03:14 ]
LGPLだと、リバースエンジニアリングの拒否の禁止かな。

738 名前:732 mailto:sage [2009/06/07(日) 23:06:54 ]
リバースエンジニアリングはどうせされるんだろうし
そんなの禁止しても意味ないだろうけど・・・。

>動的リンクなら商用非公開おk
これはつまりDLLを付属させて配れってこと?


739 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:14:11 ]
>>735
強制じゃないけど
staticリンクでその条件を満たすのはかなりしんどい

740 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:14:53 ]
>>738
そうだよ配っていいんだよ




741 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:28:13 ]
ってことは

「QtのDLLを付属させてスタティックリンクしないようにするかぎり」
無償でクローズドソースの商用利用が可能

ということか。
Qtいいな。
…ちょっと考えてみようかな。


742 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 02:12:57 ]
>>715
分かりやすい解説サイト教えてください

743 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 02:20:00 ]
>>742
ggrks
相当前からあるソフトで、情報も腐るほどあるぞ




ちなみにそのウィザードもQtでできてる

744 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 03:44:59 ]
C++のテンプレートについて教えて
クラスとどう違うんだ?

745 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 03:49:36 ]
次元が違う

746 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:18:25 ]
違いすぎて逆に説明が困難だな。

747 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:19:38 ]
訂正
C++のテンプレートについて教えて
やっぱクラスとの違いじゃなくてどういう時に使うのか
どんなニーズによってできたのか教えて

748 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:27:42 ]
型が違うだけで同じような処理を何回も書かないで済むように

749 名前:デフォルトの名無しさん [2009/06/08(月) 06:46:52 ]
今年女子大に入ったばかりのゆきこと言います。
C++を学びたいのですが、どの本がお薦めでしょうか?


750 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 06:47:04 ]
>>744
天と地ほど違うと思うけど。

[タイヤキを作るための金属の鋳型]

[食べられるタイヤキ]
の違い。ぜんっぜん違う。




751 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 06:56:11 ]
>>742
このスレに行け。
【コメント】doxygen【コンソメ】
ttp://pc12.2ch.net/test/read.cgi/tech/1212144627/

オススメは以下。
Graphviz
ttp://www.graphviz.org/
doxygenの文字化け対策 - 僻地のプログラマkmt-t - わりとどうでもいい日記 1.1
ttp://d.hatena.ne.jp/kmt-t2/20090403/1238718375
Let’s use doxygen!
ttp://www.fides.dti.ne.jp/%7Eoka-t/doxygen.html
無題ドキュメント
ttp://www.sat.t.u-tokyo.ac.jp/~tetsuya/homeNew/research/Tips/doxygen.htm
SourceForge.net: sakura-editor ≫ DoxygenComment
ttp://sakura-editor.wiki.sourceforge.net/DoxygenComment
Doxygenマニュアル
ttp://www.doxygen.jp/manual.html
Doxygen公式
ttp://www.doxygen.jp/


752 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 10:12:17 ]
>>750
それクラスとインスタンスの違いでなくて?
テンプレートはその鋳型を付け替えるとタコ焼にも今川焼きにもなる台とか

753 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:03:19 ]
型チェックしてくれるマクロとでも思えば。

754 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 12:56:01 ]
なんだかtemplateってbindに似てるね

755 名前:デフォルトの名無しさん [2009/06/08(月) 13:03:26 ]
コンストラクタの引数の値によって、データメンバの型を変える方法ってありますか?

756 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:24:48 ]
>>749
女子供は股開いてればいいんだよ

757 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:34:28 ]
子供もかよ……

758 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:49:24 ]
ぼくおとこのこだよ…

759 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:58:54 ]
>>755
同じ親クラスから継承した子クラスという条件内であれば可能。

もしくは、void*で持たせれば、多分なんでもおkだけど。

760 名前:750 mailto:sage [2009/06/08(月) 16:12:44 ]
>>752
そうとも言えるな。
なら俺方式で言うなら
クラステンプレート=[タイヤキやら今川焼きやらを作るための金属の鋳型を作るためのナニモノか]
クラス=[タイヤキを作るための金属の鋳型]
インスタンス=[食べられるタイヤキ]
とでも言えばいいかな。



761 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 16:55:30 ]
喩えなら何とでも言えるわ。

762 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:42:54 ]
名前空間について質問です。

名前空間 foo と、それとは別に名前空間 bar::foo があるとします。
このとき、bar の内側から、bar::fooでは無い方の foo を指定するにはどうしたら良いのでしょうか。

なお、環境はWinXP、C++、VisualStudio2005です。


763 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:46:20 ]
::foo

764 名前:762 mailto:sage [2009/06/08(月) 17:53:04 ]
すみません、2つ質問するつもりで書いてませんでした。

あるクラス内に、別クラスをメンバ変数として取り込む時、
その別クラスが書かれたヘッダファイルをインクルードするのではなく、
先に class foo; とだけ書いておき、コンパイラに別クラスの存在を知らせることってありますよね?

さて、その別クラスの名前が、名前空間 bar の下にあるとき、
namespace bar { class foo; }; と記述していたんですが、一般的にこの書き方で良いのでしょうか?


>>763
ありがとうございます。
なんで思いつかなかったんだろう、自分。

765 名前:デフォルトの名無しさん [2009/06/08(月) 18:40:27 ]
便乗質問、テンプレートクラスを持たせる時って同じ方法使えるん?

766 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:48:37 ]
使えるん

767 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:51:59 ]
>>764
あなたのいうクラスに名前が付いていないので
説明の便宜上
あるクラス=MyClass, 別クラス=fooとします。

まずは本題からちょっとそれた話から。
 > その別クラスが書かれたヘッダファイルをインクルードするのではなく、
 > 先に class foo; とだけ書いておき、コンパイラに別クラスの存在を知らせることってありますよね?
あります。
しかし
 > あるクラス内に、別クラスをメンバ変数として取り込む時、
この場合は前方宣言Forward declarationだけでは足りません。
というのも、
class MyClass {int m_num;std::string m_str;foo m_var;}
のようにメンバ変数としてfoo型変数を使いたい場合、
fooが不完全型なのでそのサイズがわからず、したがって
MyClassのために確保すべき領域のサイズもコンパイラには分からないことになるからです。
前方宣言で足りるのはfoo型メンバ変数ではなく
foo型への参照型メンバ変数やfoo型へのポインタ型メンバ変数、
あるいはメンバ関数の戻り値としてfoo型を使用する場合などです。


768 名前:デフォルトの名無しさん [2009/06/08(月) 18:54:54 ]
ユーザが入力した数式を処理するプログラムを考えているのですが
cin>>eq;
#define function(x) (eq)
cout<<function(1);

みたいなことができませんんか?もしくは別の方法があったら教えてください

769 名前:767 mailto:sage [2009/06/08(月) 18:54:56 ]
あとはまあ
前方宣言で足りるのは
メンバ関数の引数の型としてfoo型を使用する場合

typedefとかかな。
 > さて、その別クラスの名前が、名前空間 bar の下にあるとき、
 > namespace bar { class foo; }; と記述していたんですが、一般的にこの書き方で良いのでしょうか?
それでいいと思いますが。
class bar::foo;とか書いても無理ですし、それ以外記述できないですよねぇ?

もし有識者がいらしたらそっちを信用してください。


770 名前:767 mailto:sage [2009/06/08(月) 18:56:45 ]
>>768
意味不明ですが、どういうことですか?
プリプロセッサにより
cin>>eq;
cout<<((eq));//xは無視される
として処理されるだけですが。。。



771 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:01:07 ]
>>770
768に書いたのはあくまでイメージです。言葉足らずですみません
私がしたいことは引数にある文字列を数式として扱いたいのです
もしくはcinで入力した式をプログラムで処理したいのですが


772 名前:デフォルトの名無しさん [2009/06/08(月) 19:02:27 ]
ほんとは言語の問題じゃないかもしれないけど教えてください

@double配列と、Aメンバがdoubleいっこだけの構造体の配列を読み上げる速度を比較するための
コードを書いて実行してみたらAのほうが速かったです

環境はItanium、CentOS、GCC(C++)です

これはなぜなんでしょうか?

773 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:04:08 ]
そうなったから

774 名前:767 mailto:sage [2009/06/08(月) 19:04:19 ]
>>771
言いたいことは分かりました。
C++の知識はどのくらいありますか?
STLやBoost C++はご存じですか?
C言語じゃなくてちゃんとC++らしいコードが書けますか?

775 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:05:31 ]
>>772
不思議だわ。
・・・最適化とかレジスタの割り付けとか、もう不確定要素に押されて結果が揺らいでるだけじゃないか?

つまりどっちで書いても大差ないから好きな方で記述すればよか。

776 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:08:39 ]
>>774
c++は初めて3か月くらいですが、STLはつかったものがあるので
簡単なものなら大丈夫だと思います。

777 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:09:25 ]
>>775
計算時間半分くらいでした

ちなみにこれに気づいたのは構造体メンバのアライメントに関する実験中でした




コンパイラが賢くなりすぎてマニアックな知識も必要ない時代になったんですかねえ・・・

778 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:11:11 ]
普通のポインタがインスタンスを持ってるかどうか判別する方法はありますか?
現状ではポインタのゼロ初期化とdelete・0代入を徹底するぐらいしか手段が思いつきません

779 名前:767 mailto:sage [2009/06/08(月) 19:11:28 ]
>>776
せっかくSTLの知識の有無を聞いたのですが、STLつかった実例が見つかりませんでした。
とりあえず適当なリンクを張っておきます。

以下の中で、上に挙げられている物の方が
より優れていると思ってください。

letsboost::spirit
ttp://www.kmonos.net/alang/boost/classes/spirit.html
数式解釈プログラム - uPage
ttp://www-as.dse.ibaraki.ac.jp/umezu/?%E6%95%B0%E5%BC%8F%E8%A7%A3%E9%87%88%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0
七行プログラミング
ttp://cm.xrea.cc/thread/program_001.html

LISPですが
記号数式処理
ttp://www-antenna.ee.titech.ac.jp/~hira/hobby/symbolic/index.html


780 名前:767 mailto:sage [2009/06/08(月) 19:13:06 ]
追記。
>>776
Spiritで数式を解釈させるなら
boost::spiritっちゃえ!
ttp://tamachan.club.kyutech.ac.jp/%7Egridbug/spirit/
C++ Labyrinth
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
Spirit v1.6
ttp://boost.cppll.jp/BDTJ_1_30/libs/spirit/
これらが有名で質も高いと評判です。




781 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:14:34 ]
>>768
これでイメージが湧いたらそいつは一流のエスパーだwwwww

782 名前:767 mailto:sage [2009/06/08(月) 19:17:06 ]
>>778
>普通のポインタがインスタンスを持ってるかどうか
有効な領域を指し示しているかどうかとおっしゃりたいものと推測・解釈します。
結論から言えば、
普通のポインタでしたら、そんな方法はありません。
指し示す領域が有効かどうかなぞわかり得ません。

783 名前:768 mailto:sage [2009/06/08(月) 19:22:56 ]
>>782
いろいろ情報ありがとうございます。


784 名前:764 mailto:sage [2009/06/08(月) 19:45:30 ]
>>767>>769
ありがとうございます

>宣言
やっぱ namespace bar { class foo; }; って書くしか無さそうですね。
階層が深いとちょっと面倒かな?と思っただけなので、特に問題はありません。

>メンバ変数
確かに、メンバ変数を直接弄ろうとすると前方宣言だけじゃダメですよね。
まあ、素直にアクセサ付けれ、って話ですが。


>>765
確かに、 std::string とかは上記の方法じゃ出来ないですね。


785 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:11:52 ]
C++の関数で文字列を参照渡しする方法がわかりませ
ん &stringだと弾かれたし

786 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:16:09 ]
>>785
参照の記述を勉強してください。
クラス名& ref=参照先;
で記述します。


787 名前:785 mailto:sage [2009/06/08(月) 20:23:15 ]
参照の書き方って&nと違うの?

788 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:31:10 ]
>>787
まずは日本語から覚えた方がよさそうだな

789 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:33:46 ]
char &string;
って書いてるんだったりして。

790 名前:786 mailto:sage [2009/06/08(月) 20:36:41 ]
もう らちがあかないので

ソースみせるか、
参照の記述を勉強し直すか、
名前空間を記述するか

せめて少なくとも1つはやってみせてください。
なんかアドレスとごっちゃになってそうな予感もしますね。



791 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:39:25 ]
int func(const char *string)

792 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:40:24 ]
途中送信。>791を参照渡しにする

793 名前:786 mailto:sage [2009/06/08(月) 21:04:14 ]
>>791
それだけエスパーを強制しすぎです。

適当に答えるなら
//before
int func(const char *string);
const char * const p="mojiretsu";
func(p);
がアドレス渡し(ポインタ渡し)で、
//after
int func(const std::stirng &string);
std::string str="mojiretsu";
int func(str);
が参照渡しです。

せめて前後関係の分かるソースを見せてください。
答える側が書いたソースの方が長いっておかしいです。


794 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:16:08 ]
foo *p = new foo[bar]; delete p;
がまずいのはわかるんだけど
foo *q = new foo; delete [] q;
ってーのはべつにやばくない・・・よね?

795 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:16:58 ]
やばいよ。何が起きても知らないよ。

796 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:17:12 ]
std::stringで書き変えるのは要求を満たしてない気がするなあ。

797 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:19:34 ]
>>794
配列をnewしたときは、その配列のサイズなんかも保持しておくので
配列じゃないのにdelete[]だと、関係ない部分にアクセスする危険性がある……と教わったが、正確には違うかも。

798 名前:786 mailto:sage [2009/06/08(月) 21:21:37 ]
>>796
彼は
>C++の関数で文字列を参照渡しする方法
と言っています。
別にconst char*型変数を参照渡ししてもいいんですが、
もうエスパーするしかないからわかりませんよ。


799 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:23:02 ]
>>794
だめな理由は処理系によりいろいろあるだろうけど、そんなの関係ない。
「仕様上認められていない」ってだけで
十分に鼻から悪魔が出てくると結論づけられます。

800 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:52 ]
C++はめんどくさいな



801 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:36:37 ]
>>800
なにを今更w

802 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:50:39 ]
C++に限らず、多種多様の実装が存在する言語は多かれ少なかれそういう傾向にあると思う。






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

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

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