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


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

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



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

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

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

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

2 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 20:36:37.68 ]
>>1乙なんだからね

3 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 16:58:26.65 ]
環境依存とか嫌なんだけど(´・ω・`)

4 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:17:19.15 ]
c++で3dゲーム作るとしたらどんな風なdll?がおすすめですか

5 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:20:35.69 ]
DirectXとかOpenGLとかマジオススメ

6 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:13:40.72 ]
>>5
それ以外に道がない

7 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:37:23.13 ]
>>4
上位レイヤーなら
Ogre, Unreal Engine, Irrlichtとか

8 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:38:04.45 ]
>>4
で、もし言語にこだわらずゲームが作りたいだけならUnityおすすめ

9 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:30:50.56 ]
>>5-8
directxはよく見ますがそれ以外は聞いたことがないのばかりです
色々面白そうなのでかまってみます

10 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:23:10.50 ]
C++複雑過ぎてコンパイルするのが怖い
classのメンバ関数のconst参照、演算子の多重定義、テンプレート
Cってすごくシンプルでいい言語だったな・・・



11 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:56:40.78 ]
>>10
やりたい事を実行するのに必須のもんだったら別に怖いって事は無いだろうけどな。
選択権が無いのなら、お気の毒。

12 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 01:02:12.25 ]
いや、クラスが複雑になってきてコンパイルエラー治すのに今3、4時間かかったからさ
もちろん選択権ありありで、好きでそんなC++やってるよ

13 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:47:06.48 ]
5MBほどメモリ領域を必要とするメンバ変数を持つクラスがあるんだが
インスタンスをグローバル領域で生成すればスタックには格納されないよね?
謎のスタックオーバーフローで悩まされている・・・

14 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:52:55.24 ]
ヒープじゃダメなんですか

15 名前: ◆QZaw55cn4c mailto:sage [2012/03/21(水) 00:12:46.40 ]
gcc4, printf() で long long unsigned int を表示するときには、%の後になにをつければいいの?何をつけても警告がでるんだけど。

16 名前:llu mailto:sage [2012/03/21(水) 00:38:16.24 ]
>何をつけても警告がでるんだけど。
大袈裟だな。
アスキーキャラクタ 1〜10文字のすべての組み合わせ試したのか?

17 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:38:24.29 ]
lluでもなんでも好きなの使え
ちゃんと俺にもモリタポ払うんだろうな?

18 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:00:32.29 ]

グローバル変数の初期化順番について質問があります。

test1.cpp
---------------------------
std::string a("test1");

test2.cpp
---------------------------
std::string b(a);

両方の変数がグローバル変数だったとして、この場合bの文字列が"test1"になるかは不明ですよね

で、次の場合でも文字列bが確実に"test1"になってはくれないのでしょうか?

test1.cpp
---------------------------
const std::string &testinit(){

static std::string a("test1");
return a;

}


test2.cpp
---------------------------
b(testinit());

よろしくお願いします。


19 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:01:42.85 ]
おk

20 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:13:32.11 ]
>>19
なりますか。
でもなんか変な感じがします。
最初のやつもbが"test1"になることを保証してもいい気がするんですが



21 名前: ◆QZaw55cn4c mailto:>>16-17 thanks!! [2012/03/21(水) 01:34:55.92 ]
>>17
5000モリタポお送りしたいのですがトリップがわからなくてごめんなさい。お知らせいただいてもいいのですが、>>17のトリップであることを証明してくださいね。:-)

22 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 06:40:59.83 ]
>>10
たまにC#使うとコンパイルの速さにビビる。

23 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 07:45:04.57 ]
ヘルスバーグなら速いだろうな

24 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 08:58:40.76 ]
>>21
お前最低な性格だな

25 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 09:41:07.25 ]
つーか、%lluなんてマニュアルページに書いてあることを質問している段階で馬鹿確定。
その馬鹿の性格なんてどうでもいい。

26 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 10:30:50.38 ]
そんな馬鹿のためにモリタポの可能性を潰されそうになってるのがムカつくわ

27 名前: ◆QZaw55cn4c mailto:sage [2012/03/21(水) 19:03:51.29 ]
>>24
その言葉、当方には最大の賛辞と解釈します。なにせ、en.wikipedia.org/wiki/Doublethink こそ最高のありかたと考え日々実践していますので。

28 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 19:58:23.60 ]
ダブルチンコ? なんと奇遇な?

29 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 21:15:55.03 ]
>>27
なんか勘違いしてるな。哲学の無い矛盾はただのアホだぞ

30 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:44:01.92 ]
屑がダブルチンコwwww




31 名前:デフォルトの名無しさん [2012/03/22(木) 07:13:18.34 ]
初心的な質問ですが
テキストエディタなどは
文字の量などでメモリのサイズが可変的だとおもうのですが
こういうのはあらかじめある程度の領域を確保して
必要になるとまたある程度の領域を追加で確保するという形をとっているのでしょうか?

またその中で消したりなどをした際には配列を手前へとずらしているのでしょうか?



32 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:11:38.31 ]
>>31
プログラミング作法を読むといいよ。
まぁ、行単位か頁単位でリンクトリストするとかstd::deque辺りを使っていると思う。

33 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:12:25.47 ]
間違えた、「ソフトウェア作法」だった。

34 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 10:14:56.34 ]
ギャップバッファ最強

35 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 10:47:17.89 ]
スタック、ヒープ領域につい素人的な質問ですが
以下のようにAのインスタンスを動的に作成した場合は、Aのメンバ変数のBインスタンスもヒープ領域に確保されるということでよいですか?


class A{
  B b;
};

class B{
  int nHoge;
};


A a = new A;



36 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 11:04:45.20 ]
うn

37 名前:デフォルトの名無しさん [2012/03/24(土) 08:05:41.49 ]
いま始めたばかりの初心者なのですが、

サイト見ながら素数判定のプログラムを書いたので
実行したいのですが、どこから実行するかどなたか教えてください

38 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 10:35:53.39 ]
コンパイラや開発環境と呼べるようなものを持っているなら、
まずはそれの名前を書け

持っていないなら、それらをインストールしろ。

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


39 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 12:18:04.67 ]
wxWidgets2.9とmingwを使用しています。
コンパイルの仕方についての質問ですが、、このスレでよいでしょうか?

40 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 12:47:15.46 ]
RTFM



41 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:50:40.96 ]
STLで2つのコンテナの合成アルゴリズムありませんか?
例えばvector A, Bの全要素に対してplus関数オブジェクトを適用すればA[i] += B[i]してくれるようなもの。


42 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:54:11.55 ]
transformでいけそうです

43 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:59:51.63 ]
VC++2008はいつC++11に対応するんですか?

44 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:01:25.78 ]
2010ですら中途半端なのに

45 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:15:00.78 ]
transformじゃできなかったです!!どうすればいいでしょうか

46 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:35:14.86 ]
>>45
できるだろ
ttp://codepad.org/xpZIG0uX

47 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:42:34.17 ]
ほんとだ。ありがと。
よく見たらbinary_function継承したクラスにコンパイルエラーが出てて
実行されてたのは修正前の古いexeでした。

48 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:22:51.09 ]
nelem(要素数),vec(*int)をメンバに持ち、コンストラクタでnew int[nelem]によって
int型の配列を実現するクラスIntArrayがあり
C++で自己初期化(IntArray x = x)を抑制するコピーコンストラクタを作ろうとしました
自己初期化の問題は、左辺のIntArray xの宣言子よりxは生成されるので
右辺のxはコンパイルエラーにならないが、この右辺xは未初期化(デフォルトコンストラクタにもかからない)なので
結果としてxのメンバが不定値で設定されてしまうことにあるということです
IntArray x=x;はダメだが、
IntArray t;// default constructor
x=t; //IntArray::operator=が定義済み。
にするとうまくいく。そこで、下のようにコピーコンストラクタを定義しました

IntArray::IntArray(const IntArray& x){
if(&x != this){ /*自己初期化ではない*/
nelem = x.nelem;
vec = new int[nelem];
for(int i=0;i<nelem;i++)
vec[i] = x.vec[i];
}
else{
std::cout << "※自己初期化が行われています。\n";
IntArray t;
*this = t;
}
}

するとコンパイルエラーは出ないものの実行すると
*** glibc detected *** ./a.out: free(): invalid pointer: 0xb763bff4 ***
となり、どこかでメモリの開放がうまくできていないのかプログラムが強制終了してしまいます。
前後左右でチェックして明らかに*this = t;に問題があります。
~IntArray() { delete[] vec; }がデストラクタです。
コードの中にどこか問題のある記述ありますでしょうか?

49 名前:48 mailto:sage [2012/03/25(日) 19:34:53.85 ]
長文をかいといてすいません。
下のようにやるとうまくいきました(単純に考えうることなのに頭が回ってませんでした)

IntArray::IntArray(const IntArray& x){
if(&x != this){
・・・・
}
else{
std::cout << "自己初期化が行われています。\n";
IntArray t;
nelem = t.nelem;
vec = new int[nelem];
for(int i=0;i<nelem;i++)
vec[i] = t.vec[i];
}
}

原因が下のoperator=の自己代入抑制のコード中のdeleteで、既存の配列を開放するため
>>48のコピーコンストラクタ中のthis->vecが不定値の状態でdeleteを行っているからでした。
IntArray t; Int Array x = t が許されたのは、コピーコンストラクタが呼び出されているからなのですね。

if(this != &x){
if(nelem != x.nelem){
delete[] vec;
nelem=x.nelem;
vec = new int[nelem];
}
for(int i=0;i<nelem;i++)
vec[i] = x.vec[i];
}

お騒がせして勝手に自己解決してすいませんでした

50 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:35:24.20 ]
>>48
そのクラス、コピー代入演算子やデストラクタも定義されてるんだよね?
コピー代入演算子の実装は初期化済みのオブジェクトを期待してるだろうから、
ら未初期化のオブジェクトに対して代入しちゃマズイでしょう。



51 名前:48 mailto:sage [2012/03/25(日) 19:38:35.35 ]
>>50
まさにそういうことなんですよね・・・
コピーコンストラクタとコピー代入演算子の違いが初めてはっきり分かった気がします。

52 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:38:54.60 ]
うわ、解決してた。

にしても自己初期化に何かしらの動作を与えても呼び出しもとのバグであることに
変わりはないだろうから、心配するとしても assert() ぐらいでいいと思うぜ。

53 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:43:15.84 ]
>呼び出しもとのバグであることに変わりはないだろうから、心配するとしても assert() ぐらいでいいと思う
眼から鱗ですね。確かにその通りです

54 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 23:37:39.03 ]
独習C言語を読み終わり、乗っていたすべての例題を解けるようにはなりました。
そろそろGUIなプログラムを作ってみたいのですが、次は何を理解すればよいのでしょうか?

55 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 23:48:43.74 ]
>>54
独習C++

56 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 00:04:15.47 ]
>>54
プラットフォームや見た目、使い勝手などから、
目的に合いそうなGUIツールキットを探す

57 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:50:29.17 ]
>>54 作りたいものに応じた開発言語・ライブラリ選択基準

58 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:37:34.80 ]
ふと自作クラスを作っているとき疑問に思ったのだが
C++の既存のWin32ライブラリ、例えばMFCとかATL/WTLは
BOOL型とbool型が混在しているが、メソッドの戻り値の型を例に取ると
どういう場合はBOOL型にし、またはbool型にすべきなのだろう?

59 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:55:41.62 ]
>>58
自分で作るならbool、APIの戻り値をそのまま戻すなら(必要に応じて)BOOL。
ちなみに、Win32APIのBOOLは二値じゃない。

60 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 05:49:34.50 ]
>>59
MFCなどはAPIとの整合性を重視してBOOLを使うのだろうか?
C++のライブラリであるなら言語仕様にあるboolを使うべきと思うのだが、
boolを使うデメリットがあるのでしょうか?
シリアル化の場面ぐらいしか思い浮かばないが…



61 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:21:25.04 ]
Win32API 使う人の中じゃ有名だろうが、
GetMessageという関数があって、こいつはBOOL型を返すくせに、
-1、0、それ以外の値の3種類がある

そういう特別な例外だけ気にしておけば bool で構わないと思う

62 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 10:13:39.23 ]
BOOLを返す関数の戻り値はBOOLで受ければいいお
それからエラー処理でも何でもすればいいんだお

63 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:00:52.23 ]
Windowsデータ型のBOOLはBYTEの別名でBYTEはunsigned charの別名なんだっけか?

64 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:58:50.71 ]
msdn.microsoft.com/en-us/library/aa383751
BOOLはint

65 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 12:01:48.56 ]
>>61
実用上ではboolでキャストしても問題ないとかじゃなくて、
むしろリファレンスにboolで受けるなよ!絶対だぞ!って書かれてるのか(´・ω・`)

66 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 13:22:12.48 ]
>>64
うは、BOOLとBOOLEANで型が違うw

67 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 01:19:38.40 ]
以下のフォーマットになるようにバイナリデータ
を作成したいのですが、どうするのが手っ取り早いでしょうか?

[フォーマット]
┌───────┬─────┬─────┬─────┬─────┐
|2進数桁数(N桁)│   値A  │   値B  │   値C  │   値D  │
└───────┴─────┴─────┴─────┴─────┘
└   5 bit   ┘└  N bit ┘└ N bit  ┘└  N bit ┘└  N bit ┘

フォーマットの先頭にある5ビットで2進数表現の桁数が格納されており、
その後に続く値(符号付)が、桁数に従い2進数で格納されております。

例えば、
桁数:6桁
値A :0
値B :20
値C :0
値D :20
の場合、

00110 000000 010100 000000 010100 になります。

これを先頭から8ビットずつとって(8ビットにならに場合0パディング)、
バイナリに変換して、

0x30 0x0A 0x00 0xA0

というような感じにしたい。

どういうロジックにするのが簡単なのでしょうか?

68 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 02:14:14.28 ]
>>67
ビットフィールドでググれ

69 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 02:35:43.19 ]
任意のビット幅のポインタをクラスで作成して使えばよいんじゃね。

operatorとか使うのがよく判らないなら、Read/Write用のメンバ関数を用意してもいいし。

bit幅が64bitを超える場合はちょっと面倒になりそうではあるが。

70 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:18:18.66 ]
>>69
ビット長が5ビットで表現されているんだから64bitを超えるわけないだろ。JK

>>67
で、Nが0だったらどうなんの? Nが8を超えたときも2-4バイトにパディングしていいの?



71 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:20:03.12 ]
あ、違うのか。失敬。

>>67
パディングは最後だけってことね。

>>69
総ビット長が64bitを越えるってことか? だとしても、なんで面倒になるんだ?

72 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 14:06:49.35 ]
>>67
横からだけど適当に作ってみた
codepad.org/HyDOJc5n


73 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 23:45:00.45 ]
>>67-72
返事遅くなり申し訳ございませn。
レスありがとうございました。

>>68
ビットフィールドを調べました。
確かに便利だと思いましたが、ビット長が可変なので
使えないのかと思いました。

>>72
サンプルありがとうございます。
こんなに少ないロジックでできるんですね。
ただ、理解があまり出来ておりません
・数個ある条件式の意味
・変数maskが何故こうしてやればいいのか。
※ヘタレですません。

自分は必死こいて、ビットシフトやら、ビットマスクなどを
駆使してベタベタにコード書いてやっとできたんですけど、
72さんのサンプルを参考につくり治したいと思います。


74 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 09:02:31.82 ]
他のスレッドを実行しているCPU番号を取得するAPIはありませんか?
GetCurrentProcessorNumberで自分のスレッドのCPU番号は調べられますが
他のスレッドのCPU番号はどうすればよいですか?

対象のスレッドは自分のコードではありません。

できればXPでも実現できる方法が知りたいです。

75 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 09:04:33.89 ]
ttp://d.hatena.ne.jp/topiyama/20090623/p1
アセンブラ使えばできるらしい

76 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 12:37:20.36 ]
その記事には行き着いたのですが、
他のスレッドからそれを実行しても意味がないと思うのです。

77 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 14:05:41.14 ]
そんなもん取得して何がしたいのか

78 名前:デフォルトの名無しさん [2012/03/28(水) 14:10:32.52 ]
>>67 をbitset使って書いたらキショくなったでござる
ideone.com/LtgS7

79 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/29(木) 13:02:41.54 ]
他の関数に ジャンプ できますか?

80 名前: ◆QZaw55cn4c mailto:sage [2012/03/30(金) 05:09:54.89 ]
>>79
制限付でsetjmp()/longjmp



81 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:26:51.70 ]
2種類の全く異なるクラスがそれぞれのポインタを利用してtree状に循環参照する時に
ヘッダファイルの定義はいったいどう記述すればいいのですかね
一度だけコンパイラに参照されると片方でしか定義されないことになってしまってエラーになる
ヘッダだけでvoid*型にしてcppファイルで形指定して参照するくらいしか思い浮かばないけどダサすぎる

82 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:29:47.58 ]
クラス名だけ書いておけばいいって話ではなく?

83 名前:81 mailto:sage [2012/03/31(土) 00:50:38.47 ]
すまん、出来ればhファイルだけで完結させたくて
関数のスクリプトも全部hファイルに記述しようとしてるんだけど
名前を入れるだけではnewの部分で形が認識できないとエラーになる

84 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:52:47.84 ]
inline CLASS::func(){} を知らないて話し?

85 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 01:04:26.86 ]
んーなんかなにがやりたいかよくわからんね
エラーの出る最小コードとか作れない?

86 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/03/31(土) 14:18:41.39 ]
RubyスクリプトをC言語に翻訳することできますか?

87 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/03/31(土) 14:19:49.58 ]
>>81 >>83 ポインタのみ必要なら、class HOGEHOGE; って書いておけば?

88 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/03/31(土) 14:24:24.01 ]
class HOGE1;
class HOGE2;

class HOGE1 { ... HOGE2* getHoge2(); ... };
class HOGE2 { ... HOGE1* getHoge1(); ... };
inline HOGE2* HOGE1::getHoge2() { return new HOGE2; }

89 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 16:06:16.23 ]
個人的にはツリーのノードにあたる部分のインターフェイスを定義してから
両方のクラスはそのインターフェイスを継承して作るのがいいんじゃないかと思うがどうか

90 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 23:48:24.66 ]
VC++10のdebugビルドにおいてSTLのiteratorが有効か無効かどうかチェックが入るみたいなのですが、
これが障害となりboost::rangeにおけるemptyメンバやsizeメンバが使用できません。
原因は各種オペレーターオーバーロード時の動作に際して上述したチェックが入り、dereferenceできない内容ならばassertしてしまうからです。
これにより初期状態(例えば内部表現がnullptrのiterator)かどうかの判定ができません。
releaseビルドではチェックが入らないため問題なく扱えるのですが、どうしたら良いのでしょうか?



91 名前:81 mailto:sage [2012/04/01(日) 02:47:59.43 ]
>>87
new するってことはデフォルトコンストラクタが必要

>>89
継承しても問題の根本が解決するわけじゃない



a.h
#pragma once
class a
{
public:
a(){}
make_b(){new b();}
}

b.h
#pragma once
class b
{
public:
b(){}
make_a(){new a();}
}

と言った具合にcやcppを使わずJavaのようにhファイルのみでクラスを実装しようとした時に
双方向で参照可能にするようなコンパイラの定義方法が存在しないので困ってる

92 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 03:11:13.67 ]
cppに定義かけ
c++じゃそれが普通だ

93 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 03:13:11.61 ]
>>91
a.h,b.hをまとめてab.hに書く
普通はcppに書くけどね

94 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 08:48:02.88 ]
>>93
テンプレートでなら見たことがあるな、そういう書き方。
普段からC/C++に触ってるわけじゃないので、今でもやるのかどうかは知らないけど。

95 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 11:17:11.93 ]
いくら初心者でもそのコードはひどい…
あとC++とJavaは単に文法が似ているだけで中身全く別の言語なんで
"Javaのように"できることはほとんどないと思ったほうがいい
むしろ危険

96 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 17:59:11.24 ]
質問させてください。

環境:Windows7 32bit , Visual Studio 2005

fopen("r+")で取得したファイルポインタに書き込む際、
"w"で開いたかのように書き込む(内容をすべて上書きする)方法はありますか?

97 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 18:27:13.37 ]
_chsize()または_chsize_s()

98 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:16:45.57 ]
>>97
ありがとうございます!

99 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 02:02:15.72 ]
>>91
なんでそんな上から目線なの?

もうbをaの内部クラスにしちまえよ

100 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:28:15.11 ]
vc10で銀行丸めの関数を作りたいのですが
単純に実装すると、負かどうかや、小数部がちょうど0.5のとき
など分岐だらけになってしまいます。
分岐のない高速なアルゴリズムを教えていただけませんか?








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

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

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