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


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

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



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

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

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

231 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 09:16:58.00 ]
リンク先を読んだならchecked_***はためしたんだろうか

232 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:50:07.41 ]
デバッグ用はおそくていい。
速くしたければリリース使う。

233 名前:227 mailto:sage [2011/12/28(水) 21:10:53.96 ]
>>231
227に関しては早くなるかもしれませんね。
でも、今はなくなってしまったようです。
VC++2008のalgorithm
msdn.microsoft.com/en-us/library/chzkfc23%28v=VS.90%29.aspx
VC++2010のalgorithm
msdn.microsoft.com/en-us/library/chzkfc23%28v=VS.100%29.aspx
make_checked_iteratorは残っていますが、これを使ってstd::copyしても、内部で
 _DEBUG_RANGE
_DEBUG_POINTER
が呼ばれた後、ようやくコピー処理が走るようになってるようです。

>>232
それが、我慢出来ないくらい遅いんですよ。
ソースコードデバッグを開始すると数分反応が帰って来ませんし。

234 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:15:11.47 ]
[]じゃなくてatを使っているとか
そういうのじゃないよね?

235 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:27:54.73 ]
とりあえずreserve()してからだとどうなるか知りたいね

236 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:29:53.57 ]
>>234
SECURE_SCLのせいでatも[]も変わらなくなってるよ
最初に気がついたときは怒りで発狂するかと思ったw

ありなしでDLLまたげないしね
ほんと面倒だわ

>>233
うちもけっこうでかいプログラム作ってるけどSECUrE_SCLをOFFにしてDebug版は素直に使ってる
ただ、デバッグ実行じゃなくてexeを直に叩いて立ち上げてからアタッチしたほうが
結構速い気がするのでそっちを使ってる


237 名前:227 mailto:sage [2011/12/28(水) 21:30:32.33 ]
>>234
atは使ってませんね。[]です。

238 名前:227 mailto:sage [2011/12/28(水) 21:45:42.75 ]
>>235
reserveして設定も試しています。
[]で設定する他、生ポインタに変換して設定したり、OpenMPを使ってみたりしてみましたが…、
assignの方が早かったです。
どうも、reserveも要素ごとに配置newが発生したり、_DEBUG_RANGEなどが走ったりしているようで、
値の設定分、遅くなってしまうようです。

>>236
立ち上がってアタッチってのはたしかに有用かもしれませんね。
ありがとうございます。


239 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:52:35.70 ]
どんな操作なのかソース出したほうがいいんじゃないかと思う



240 名前:227 mailto:sage [2011/12/28(水) 23:13:13.60 ]
>>239
ソースは手元に無いので、覚えている範囲で似たようなコードを書きました。
あと、うちにあるのはExpressなので、OpenMPが動くかどうかは不明です。
codepad.org/kqZndGzg
ちなみに >>238 はreserveではなくて、resizeでした。
申し訳ありません。
reserveも試してはいますが、assignの方が早かったと思います。


241 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 01:07:24.97 ]
forじゃなくてfor_eachを使うと少しはましになるかもしれないなあとか
この際だからmemcpyでいいんじゃねというくらいしかまともな方法は思いつかない

boost::container::vectorとか使って望む結果になるかどうかも試したことないからわからないな

242 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 04:03:07.90 ]
void function (char *arg);
という関数に渡された引数が &hoge[1]だった場合、
関数の中ではhoge[0]はarg[-1]という表現でいいんですか?

243 名前:227 mailto:sage [2011/12/29(木) 06:52:19.95 ]
>>241
へえ、boostにもvectorがあるんですね。
これは、試してみたいですね。
ありがとうございます。

244 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:20:41.31 ]
boostには変なコンテナがたくさんあるよ

Header <boost/container/container_fwd.hpp>
Header <boost/container/deque.hpp>
Header <boost/container/flat_map.hpp>
Header <boost/container/flat_set.hpp>
Header <boost/container/list.hpp>
Header <boost/container/map.hpp>
Header <boost/container/set.hpp>
Header <boost/container/slist.hpp>
Header <boost/container/stable_vector.hpp>
Header <boost/container/string.hpp>
Header <boost/container/vector.hpp>

ひと通りどんな内容なのか目を通しておくとよい
boostは今や膨大な内容になっていてとても全部目を通すのは不可能に
近くなってきたから興味のある所だけでも見ておこう

245 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:29:02.28 ]
boostはいらん。
これ使うやつはアホウだ。

246 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:31:19.60 ]
timerとか正規表現とかスマートポインタあたりで使うやつがいるが。
有名なライブラリがあったりtimerなど3行程度で自作できるだろ。
バージョン違いで動作が変わる可能性あるし、インクルードするやつはアホウ。

247 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:37:09.53 ]
バイナリの配布で中身にboost使うなら良い。boostのバージョンに依存しないからな。
ソースコードを張ったり公開するところでboostはダメだな。

248 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:24:02.76 ]
0xが普及したらboostとか要らなくなる

249 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:11:43.53 ]
スマートポインタなんて使う必要ないと思うんだが。
STLを使っとけばスコープ外れたら自動で解放するだろ。
どうやってnewの使用が回避出来なかったら手動で開放しろよ。
もしくはデストラクタに組み込めよ。そしたらいらん。



250 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:59:55.29 ]
>>245-246はアホウ
使ってもみないでただ批判ばかりしてる

251 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:33:10.27 ]
>>249
>デストラクタに組み込めよ
これを毎回書くのがだるいからスマポ使うんだろ

252 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:33:12.78 ]
つかってみて言ってるんだ。
boostが優れている所なんてないだろ。
使う意味なし。

253 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:37:06.06 ]
釣りにしても露骨すぎる
真性なのだろうか

254 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:46:40.93 ]
そうだな
標準の std::unique_ptr と std::shared_ptr で十分だよな

255 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:51:34.14 ]
それもいらないが。速度低下するし。
スマートポイント使うんだったら、C#とかPHPとかBASICとか自動で開放するやつつかえよ。

256 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:03:08.22 ]
一理ある
パフォーマンス犠牲にして楽したいなら他の言語だよな

257 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:08:46.98 ]
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。

258 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:04:27.15 ]
>>255
unique_ptr は速度低下しないだろ。

259 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:08:33.62 ]
ユニポはクールだよねぇ
右辺値最高やわ



260 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 18:39:50.46 ]
>>258
C++スレで他言語持ち出すバカなんだから察してあげなよ

261 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:29:53.46 ]
境界チェックつきの配列を使いたく、オリジナルで
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1111063861

の回答のようなクラスを作ろうと思うのですが、

このクラスで作る配列を静的に初期化したいのですが、できますか?

static int hoge[] = {0,2,4,5,};みたいな感じで扱いたいです。

262 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:45:38.95 ]
boost::array使えば?

263 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:49:28.42 ]
template <class T, unsigned int N> struct Array {
T elements[N];
// コンストラクタデストラクタは書かない
T & operator [] (unsigned int n) {
if(n < N) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
} ;

たぶんこれでいけると思うよ

264 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:15:22.35 ]
boostは使えませんので、類似のものを作るか・・・

>>263

operator[]はメンバー関数である必要があります っていわれました。
環境は、VC2010です

265 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:09:07.12 ]
すいません。そのままでコンパイルできました。
size N を明示的に書かなくても使えますか?

266 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:42:55.10 ]
無理
でもVC10なら自分で書かずともstd::arrayで範囲チェックできるだろ

267 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:58:25.77 ]
平松サイド  vs   橋下サイド

民主党         大阪市民
自民党          ν速民
共産党
財界
関西電力
連合
自治労
日教組
公務員
毎日新聞
MBS
解同
極左

大阪の敵が濃縮されてわかりやすくなったな


268 名前:265 [2011/12/30(金) 12:04:10.90 ]
サイズを省略するのはあきらめます。


template <class T, unsigned int N> struct Array {
T elements[N];
// コンストラクタデストラクタは書かない
T & operator [] (unsigned int n) {
if(n < N) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
} ;

int main()
{
Array<int,5> test = {1,2,3,4,5};


}
みたいにすると、
コンパイルされたクラスの テンプレート のインスタンス化 の参照を確認してください

といわれコンパイル通らないのはなぜでしょうか?

269 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:16:50.18 ]
MSVC2010 / C++

□使用可能なライブラリ
stl / boost / zlib / ライセンスがうるさくないものであればその他もOK

□やりたいこと
zipファイルの中身(主にファイル名)を列挙したいです。
その時に、なるべくwchar_tベースでの書庫ファイル指定や、ファイル名取得をしたいです。
zlib + minizip だと、char文字列でのやり取りしかできないように思います。

□質問
どんなライブラリをどういう感じで使うと実現できますでしょうか。

よろしくお願いいたします。



270 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:23:41.34 ]
charで格納された物は、ユニコードにならないんだよ。
ユニコードで格納された物はユニコードで取り出せる。
取り出しかたの問題ではないから工夫しても無理。

271 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:28:04.94 ]
shift+JISの方が好き

272 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:03:50.87 ]
EUCやSJISで格納された名前をwhar_tに変換して格納すれば良い。
zip読み取りルーチンとは関係なし。
UTF-16LEで格納されていればそのまま格納すれば良い。
格納時のエンコードの問題。

273 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:13:05.57 ]
VC++であるクラスを継承してメンバ変数を追加し=operatorをオーバーロードした時に
基底クラスのメンバーをコピーするのはどうやって記述すればいいんでしょうか?

class NewClass : public OldClass
{
public
int mNewMenber;
...
NewClass operator=(NewClass &nc){
/* 基底クラスのメンバーをコピー */
????????????????
mNewMember = nc.mNewMember;
return *this;
}


274 名前:273 mailto:sage [2011/12/30(金) 13:15:57.84 ]
ああ、基底クラスにも自身の=operatorが定義してあります。

275 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:27:13.08 ]
NewClass & NewClass::operator = (NewClass const & other) {
OldClass::operator = (other);
mNewMember = other.mNewMember;
return *this;
}

276 名前:デフォルトの名無しさん [2011/12/30(金) 13:41:19.18 ]
Visual C++ 2010 EEです。
std::swapのclass Cスペシャルを適用したまま、このエラーを消す方法はありますか?

template< typename A0, typename A1, typename A2 > class C;

// std::swapのclass Cスペシャル。※実際はもっと細かく特殊化をしているのでこの形式は崩せません。
namespace std{
template< typename A0, typename A1, typename A2 >
void swap ( C< A0, A1, A2 >& v0, C< A0, A1, A2 >& v1 ){ 略 }
};// namespace std

void func(){
typedef C< int, int, int > C_t;
std::vector< C_t > x;
std::vector< C_t > y( x.begin(), x.end() ); // error C2668: 'std::swap' : オーバーロード関数の呼び出しを解決することができません。
};

277 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:15:17.84 ]
>>268
> みたいにすると、
> コンパイルされたクラスの テンプレート のインスタンス化 の参照を確認してください
>
> といわれコンパイル通らないのはなぜでしょうか?
初期化子の書き方。
テンプレートを使っててもユーザー定義のコンストラクタをもたないクラスの初期化のやり方はかわらない。

struct S1 {
int a, b, c;
};

struct S2 {
int a, b[3], c;
};

struct S3 {
int a[3];
};

int main()
{
S1 s1 = {1, 2, 3};
S2 s2 = {1, {2, 3, 4}, 5};
S3 s3 = {{1, 2, 3}};
return 0;
}

278 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:23:28.26 ]
下のwhile文でbool_isがfalseなら以下行を読まずにwhileの先頭に戻りたいのですが、
簡単な方法はありませんか?
ifで括るとかだとちょっと長いんで・・・



while(i<max)
{
bool bool_is =hogehoge();

if(!bool)
{
i++;
以下の行を読まずにwhileの先頭に戻りたい。
}

etcetra....
i++;
}



279 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:26:08.90 ]
continue



280 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:41:22.84 ]
>>277
なるほど。では実際にこの配列を初期化して使うにはどうしたらよいのでしょう?

281 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:13:29.19 ]
>>280
新しめのコンパイラを使うといい
g++なら-std=c++0x



282 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:25:39.65 ]
>>280
ヒント
>>268でテンプレートArrayはArray<int,5>で

struct Array<int,5> {
int elements[5];
// コンストラクタデストラクタは書かない
int & operator [] (unsigned int n) {
if(n < 5) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
};

というクラスを定義する。メンバ関数を無視してみると…。

struct Array<int,5> {
int elements[5];
};

283 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:28:06.42 ]
>>276
class Cスペシャルのswapをstdでなくclass Cと同じ名前空間(だけ)に置く。

284 名前:281 mailto:sage [2011/12/30(金) 16:18:11.57 ]
>>280
すまん、よく読んだらバージョン関係ないな

>if(n < N) return elements[n] else throw out_of_range("out_of_range");
if(n < N) return elements[n]; else throw out_of_range("out_of_range");

セミコロンが抜けてるだけかと。

285 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:59:46.80 ]
openglで戦車のアニメーションを作っています
動きは前進、後退、その場での方向転換をキー操作で行いたいです

戦車自体が方向転換しても次に前進しようとした時に、ワールド座標系のX軸の向きに進むため
戦車が横滑りしてる感じになってしまいます
うまく移動→方向転換→移動をを実現するにはどうしたらいいでしょうか


286 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:07:56.55 ]
実物の戦車は横滑りするよ

287 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:08:15.37 ]
3Dプログラムできるのに方向転換すらできないとは。

288 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:10:33.85 ]
戦車ローカル座標でみた前方への移動ベクトルをワード座標に直すんだよ

289 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:12:28.23 ]
向いてる向きから進む距離を割り出せよ。北へ進むのがY+1で、北西ならX-1/√2 Y+1/√2 とかだろ。
cosθ、sinθであらわせるはずだろ。



290 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:16:10.66 ]
openglが扱えてここに書き込む時間があれば自己解決すると思うんだが。
難解な物理法則や、戦車特有の挙動などが関与してるのか?

291 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:22:54.86 ]
>>288,289
あー、戦車のローカル座標のX軸に進めることしか考えてなかったです
現在の向きから計算してやればいいのか
ありがとうございます、やってみます

292 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:39:35.50 ]
>>285です
やっぱりわかりません

glTranslatef(go*cos(Turn * PI / 180.0), 0.0,-go*sin(Turn * PI / 180.0) );// 平行移動
glRotatef( turn, 0, 1, 0 ); // Y軸回転

turnは回転の角度、goは前進した距離、Turnはgoが更新されたときに現在の回転の角度が入ります
原点から 方向転回→前進→方向転換 までできるんですけど
その後前進しようとすると、再び原点から方向転換した方向へ進み始めてしまいます
現在の位置を考慮しないといけないと思うのですが、うまく実装できません…

293 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 19:05:03.70 ]
>>292
戦車のモデルが +z を向いていて、Y軸回転がθだとすると、
戦車の方向ベクトルは(sinθ, 0, cosθ)となり
方向ベクトル*速度 * 経過時間 = 移動ベクトル

別な考え方では
戦車の向きベクトル = 戦車のワールド行列 * ベクトル(0, 0, 1)
あとは同様
戦車の位置+移動ベクトル=新しい位置

294 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 19:31:07.28 ]

朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。
捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。

Domain Information: [ドメイン情報]
a. [ドメイン名] ASAHI-NP.CO.JP
e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ
f. [組織名] 株式会社 朝日新聞社

−「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」−
これはおそらく週刊誌さえ書けない。
「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ 09.3



295 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:16:30.63 ]
>>285
戦車の頭のある位置 - 戦車の中心 = 戦車を中心を0とした時の方位ベクトル
方位ベクトルを正規化して x+y+z=1.0になるようにする
何故なら最大推力が1.0だから
そしたら今度は移動速度をそのベクトルに掛けて
戦車の中心座標に結果を加算する


296 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:36:15.20 ]
てんさいです

【東京都渋谷区】 12/31(土) 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!
年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!

12時00分 渋谷駅ハチ公前広場 「街頭演説」(〜13時30分)
13時30分 移動
14時00分 渋谷公会堂前 「街頭演説」(〜14時45分)
15時00分 代々木公園・NHK横「イベント広場」
「年忘れしてはならない!紅白桜祭」
抗議集会・コンサート・炊き出し等々
盛りだくさんでお送りします!(〜21時00分)

297 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:25:43.79 ]
初歩的かもしれませんが
入力文字列const char* inputを文字コードの文字列として格納したいのですが
unsigned int len = strlen(input);
char* str = (char*)malloc(2*len + 1);
if(str){
for(unsigned int c = 0 ; c < len ; c++){
sprintf_s(&str[2*c],2,"%x",(char)input[c]);
}
str[2*len] = 0;
}
このようなコードだとsprintf_s関数でバッファが足りないと言われてしまいます
charを16進数で表示すると2Byteになると思うのですがなにか思い違いをしてるのでしょうか

298 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:31:16.40 ]
はい

299 名前:297 mailto:sage [2011/12/30(金) 23:34:57.26 ]
書き込んだ後に解決する法則
ヌル文字も数えろとのことですか、ぐぬぬ



300 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:51:08.09 ]
%02x

301 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:53:11.73 ]
%x も %02x も int になっちゃうから
引数キャスト (char) してもだめ


302 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:10:22.70 ]
>>283
それも試しましたが、やはり名前の衝突は避けられず・・
結局自前のswapの名前を変えることで対応しました
なんかC++の限界を感じた・・どうもありがとうございました

303 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:26:47.11 ]
まあ自分の限界を知るのは悪いことじゃないよ

304 名前:297 mailto:sage [2011/12/31(土) 00:31:45.74 ]
もしかして>>297のコードはinput[c]をunsigned charにキャストしないとマイナスの値に対してエラーになる?
とかなんとなく思った

305 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:54:14.97 ]
正解おぬでとう

306 名前:297 mailto:sage [2011/12/31(土) 00:57:19.48 ]
やったね!
エラーが出なくなった時、人は優しくなれる

307 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:25:35.25 ]
>302
これで VC++10 でコンパイル通るよ。っちゅうか std に置いたままでも通ってる。
まずはエラーが起こる最小コードから確認してみれば?

#include <vector>

namespace mine {

template<typename A0, typename A1, typename A2>
class C {};

template<typename A0, typename A1, typename A2>
void swap(C<A0,A1,A2> &c1, C<A0,A1,A2> &c2) {}

}

int main(void)
{
  typedef mine::C<int, int, int> C_t;
  std::vector<C_t> x;
  std::vector<C_t> y(x.begin(), x.end());
  return 0;
}


308 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:24:15.70 ]

cp2.uh-oh.jp/read_img/index/ab83e09400ff17d99f45ceee15a37e09.jpg
cp2.uh-oh.jp/read_img/index/a58c2ddc9cdbe45529ef0d58c95cc232.jpg

テレビに騙されるな(自称街の人-台本読んでるだけの業者)


309 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:44:43.53 ]
class Hoge
{
public:
int *count;
};

Hoge hoge =new Hoge[x];

こういう配列を作るとxの値によっては作った瞬間にエラーになってしまう場合があるのは何故ですか?
回避策はありませんか?



310 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:45:47.14 ]
Hoge *hoge =new Hoge[x];
の書き間違いです。

311 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:56:43.17 ]
> エラーになってしまう

なんで、エラーの内容を書こうと思わないんだろう…

お前がバカだからという回答でも期待してるのか?

312 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:57:28.18 ]
try {
Hoge *hoge = new Hoge[x];
} catch (std::bad_alloc &e) {
std::cerr << e.what() << std::endl;
}

313 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 04:22:28.69 ]
馬鹿には無理

314 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 10:47:15.57 ]

K-POPの真実
89 名前:名無しさん@12周年[sage] 投稿日:2011/12/27(火) 18:42:50.71 ID:oPBf/MSP0
12月23日、東京国際フォーラムホールAで大国男児、X−5 、C-REAL、チェ・スジョンらが出演した『K-POP LIVE for X'mas 2011』が開催された。
しかし、ふたを開けてみれば2階はすべてクローズド、1階も後列は空席だらけと、さんざんな結果に終わった。

news.infoseek.co.jp/article/cyzowoman_27Dec2011_17759
    ↓    ↓    ↓

395 名前:山師さん@トレード中[] 投稿日:2011/12/27(火) 15:21:13.95 ID:E5FNgBRR0
K-POP LIVE for X'mas 2011
公演日:2011年12月23日(金)
会場:東京国際フォーラムホールA(収容人数5000人)
出演:大国男児 / X−5 / C-REAL / Yoonji

開演前
cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221655.jpg
cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221654.jpg

開演中
cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224222054.jpg
補助金が尽きてガラガーラ テレビは捏造演出装置


315 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:06:09.92 ]
std::unique_ptrの使い方を勉強してるのですが、単純にauto_ptrから書き換えていて躓きました。
引数として渡すときはわざわざ呼び出し側で f(std::move(p)) とするのが普通なのでしょうか?

それとも、

void f(std::unique_ptr<Hoge>& p)
{
 std::unique_ptr<Hoge> p_ = std::move(p);
}

とした方がいいのでしょうか?
この場合はどっちでもいいような気がするのですが、p_をクラスのメンバとするときに
呼び出し側にstd::moveを意識させた方がいいのかそれは冗長なのか教えてください。

316 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:10:02.98 ]
pの所有権が誰にあるかによるだろ

317 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:20:56.43 ]
もちろん、呼び出された側にあります。
想定しているのは、

class Hage
{
public:
 std::unique_ptr<Hoge> p_;
 Hage(std::unique_ptr<Hoge> p) : p_(std::move(p)) { }
};

class Mage
public:
 std::unique_ptr<Hoge> p_;
 Mage(std::unique_ptr<Hoge>& p) : p_(std::move(p)) { }
};


new Hage(std::move(p1));
new Mage(p2);


HageとMageどちらがいいのかなと思いまして。
auto_ptrの使い方を踏襲するのなら、Mageですが呼び出し側に移譲を意識させるのならHageの方が
いいような気もしています。

318 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:24:27.04 ]
class Hage
{
public:
 std::unique_ptr<Hoge> p_;
 Hage(std::unique_ptr<Hoge>&& p) : p_(std::move(p)) { }
};
所有権を移動させるなら
俺ならこうする

319 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:44:57.90 ]
まあ普通に考えたらそれしかない



320 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 03:12:05.20 ]
Hage(std::unique_ptr<Hoge>& p) : p_(p.release()) { }

auto_ptrを踏襲するならこれでもいいだろうが
どちらにしろ>>317はないな

321 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 17:15:58.39 ]
みんな健康でいいね。

322 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:30:28.40 ]
hoge.h内

extern int hoge[];


hoge.cpp内

int hoge[] = {0,1,2,3,4};

として、
main.cpp内で
int size = sizeof(hoge)/sizeof(hoge[0]);として配列の要素数を求めたいのですが、
これが使えません。
初期時に要素数を指定しないのはそのままにmain.cppで配列の要素数を求める方法を
教えてください、



323 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:32:39.73 ]
無理です

324 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:36:00.92 ]
無理なのですかあ。残念

325 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:39:55.69 ]
sizeof(hoge)/sizeof(int)

326 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:51:40.59 ]
それコンパイルとおらんやろ

327 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:04:17.85 ]
>>325
要素数求めるなら、分母はhoge[0]の方がよくね?

328 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:06:51.78 ]
PS2のゲームなのにPS1並のグラだろ
察しろよ

329 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:12:10.00 ]
>>322
// hoge.h
extern int const yousosuu;

// hoge.cpp
extern int const yousosuu = sizeof(...



330 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:54:07.38 ]
DXライブラリ(DirectX)やGLUT(OpenGL)って、グローバルな環境変数的な何かを使っているからか、
ウィンドウを一つしか用意できない「っぽい」んですよね。

今回の例に限らず(というかこの例はイケてないかな)、
『グローバル変数を利用するスレッドセーフではない』ライブラリを、
複数箇所から安全に利用する方法として、
使いたい人がサンドボックス的な他に影響を及ぼさない場所を用意して、
その中にライブラリを展開して、
サンドボックス名.普通の使い方、とか、サンドボックス名::普通の使い方、みたいなことって出来ませんか?

今現在あるネーム空間を無理やり他のネーム空間に突っ込む、ということが出来れば解決なのですけど。
接頭を付加できるって聞いたことないし、試してみてもうまくいかないっぽい。

言いたいことを書けているかな…。日本語が不自由で申し訳ない。

331 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 02:11:48.57 ]
ttp://toro.2ch.net/test/read.cgi/tech/1324704285/381
Javaスレでも質問したのですけど、↑についてお願いできますか?
C++の場合はどうなのでしょうか?






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

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

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