トップページ⇒tech
1001コメント247KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/11/10(日) 14:31:34.81
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.87【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1382185936/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

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

【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
なお、hogeはNGワードに追加しておくことが強く推奨されています。
0153デフォルトの名無しさん2013/11/26(火) 01:12:08.78
一瞬 日付を忘れる時ってあるよねw
0154デフォルトの名無しさん2013/11/26(火) 04:49:18.23
コンパイル時の処理とリンク時の可能性も有るメンバ初期化を同列に見るなんてセンス無いわ
0155デフォルトの名無しさん2013/11/26(火) 08:18:59.45
>>152
func() の戻り値である一時オブジェクトで参照を初期化しているわけじゃない(class Bを初期化している)から
12.2 にある延命される条件には該当しない。
0156デフォルトの名無しさん2013/11/26(火) 18:45:52.57
× 一時変数
○ 一時オブジェクト
0157デフォルトの名無しさん2013/11/27(水) 00:57:13.18
変数なんてない、あるのはオブジェクトだけ
豆ね
0158デフォルトの名無しさん2013/11/27(水) 04:30:25.35
ばーか
0159デフォルトの名無しさん2013/11/28(木) 22:56:30.93
class Model { std::vector<int> vi; }

とするとvectorがサポートするメソッドをすべて公開し
その中か呼び出すという七面倒なことになるのですがなにかいい案はありますか?

public:
push_back(int i){vi.push_back(i);}
....
0160デフォルトの名無しさん2013/11/29(金) 00:35:28.85
>>159
hoge君、何をするためのなにかいい案なんだhoge?
0161デフォルトの名無しさん2013/11/29(金) 01:13:14.99
>>159
public 継承する。
または private 継承して using を必要なだけ書く。
0162デフォルトの名無しさん2013/11/29(金) 01:14:14.23
>>159
自動委譲に関する話なら
http://toro.2ch.net/test/read.cgi/tech/1382889622/107
以降でやってたよ
もっとも「vectorがサポートするメソッドをすべて公開」しなきゃいけない様な
クラスなら俺なら普通にvectorを継承するけど
0163デフォルトの名無しさん2013/11/29(金) 08:14:14.08
>>159
何をしたいのかよくわからんが、いっそのこと vt 公開すれば?
0164デフォルトの名無しさん2013/11/29(金) 10:16:31.14
参照返すアクセサがあればいいだけのような。
0165デフォルトの名無しさん2013/11/29(金) 14:13:38.28
typedefでいいじゃん
0166デフォルトの名無しさん2013/11/29(金) 15:43:37.19
派生クラス側の仮想関数にも(それ以上継承されていなにも関わらず)virtualがついていたりいなかったりするんですが、
明示的に仮想関数ってことを表すためって解釈でいいんでしょうか?
0167デフォルトの名無しさん2013/11/29(金) 15:46:44.35
はい
0168デフォルトの名無しさん2013/11/29(金) 15:51:58.27
ありがとー
0169デフォルトの名無しさん2013/11/29(金) 17:29:26.94
>>159の質問はわざと低脳には理解できないようにした質問だろ
これは低脳排除するときにやる手だろ
でも、低脳は頓珍漢レスするからな
0170デフォルトの名無しさん2013/11/29(金) 19:10:49.50
↑頓珍漢の王様が降臨しました
0171デフォルトの名無しさん2013/11/29(金) 19:23:30.53
↑頓珍漢レスの最底辺民が降臨しました
0172デフォルトの名無しさん2013/11/29(金) 20:34:49.01
頓珍漢同士仲良くしてろよ
0173デフォルトの名無しさん2013/11/29(金) 21:29:28.51
頓珍漢の王様や最底辺民、さらにhoge、アンチhogeまでいる楽しいスレ

>>172
紹介するぐらい仲良しこよし
0174デフォルトの名無しさん2013/11/30(土) 18:04:19.37
日本語、abcなどのアルファベットを人間では読むことができないように、
暗号化したいのですが資料とかないですかね?
ついでに、暗号化したものの複合化など
0175デフォルトの名無しさん2013/11/30(土) 18:40:44.98
真面目な暗号は資料はあるが実装は手間だし、暗号化ライブラリを使え。
適当暗号は資料化する価値がないし、資料化されてるくらいだと定型文過ぎて意味が無い。

適当暗号は適当に逆算可能な数値計算で各文字の値を撹乱すればよい。
簡単なところでは適当な固定数値や数値列、nバイト前の平文を組み合わせてXORとかな。

暗号文を文字列表現するなら最後にBASE64なり16進数なりに戻せばOK。
0176 ◆QZaw55cn4c 2013/11/30(土) 18:46:41.80
>>174
DES, AES, RSA, 暗号に近いところにある SHA あたりを
http://www.amazon.co.jp/dp/4627847610
0177デフォルトの名無しさん2013/11/30(土) 19:19:51.78
今時DESの名を挙げる人は死んだ方がいい
お願いだから、他人の迷惑だから死んでくれ
0178 ◆QZaw55cn4c 2013/11/30(土) 19:31:20.85
>>177
歴史的事情というのは無しですかトリプルDESも死んじゃってRijndael 一色ですかそうですか
0179デフォルトの名無しさん2013/11/30(土) 20:37:59.37
ハッシュじゃないSHAとかあったっけ?
そこ無視しても本文の暗号化聞かれてRSA出すあたりもどうかと。
公開鍵暗号って普通は鍵の暗号化だけに使って、本文はその鍵使った共通鍵暗号だろ
0180デフォルトの名無しさん2013/11/30(土) 20:51:41.44
複合できず


DES, AES, RSA, 暗号に近いところにある SHA あたりを
0181デフォルトの名無しさん2013/12/01(日) 12:51:09.55
GnuPGってライブラリあったっけ?
あれば使うのが手だと思う。
0182デフォルトの名無しさん2013/12/01(日) 16:17:42.38
LibTomCryptって一部パブリックドメインのオープンソースな暗号ライブラリとかもあるな。
吉里吉里とかもコレの一部を組み込んでた筈。
ただ、既に更新停止してしまったらしい。残念・・・
ttp://tkyk.name/blog/2009/06/11/Programming-Encryption--libtomcrypt/
0183 ◆QZaw55cn4c 2013/12/01(日) 16:37:38.04
>>179
>公開鍵暗号って普通は鍵の暗号化だけに使って
公開鍵暗号系はコストが高いから普通そうするが、テキスト全部を公開鍵暗号でおくったっていい
SHA を含めたのは、参考文献にあわせただけね、でもハッシュ関数も暗号関係のお話では重要だと思っているよ
0184デフォルトの名無しさん2013/12/03(火) 12:56:02.13
下記プログラムでビルドがうまくいきません。
二項演算子 '=' : 型 'A' の右オペランドを扱う演算子が見つかりません
とのことですが、定義しているのになぜでしょうか?

class A
{
int m_d;
public:
A(int data) :m_d(data){}
A& operator=(const A &obj){
m_d = obj.m_d;
return *this;
}
A operator*(const A& obj){
return A(m_d * obj.m_d);
}
int print(){return(m_d);}
};

class B : public A
{
public:
B(int d) : A(d){}
};

int main()
{
B t1(100),t2(2),t3(0);
t3 = t1 * t2;
return 0;
}
0185デフォルトの名無しさん2013/12/03(火) 13:02:55.95
初心者はただの関数つかっとけ。それで完全に補完できる。
0186デフォルトの名無しさん2013/12/03(火) 13:23:52.35
t3 が class B で
[class B] = [class A]
こうなってるからじゃね?
0187デフォルトの名無しさん2013/12/03(火) 13:27:48.91
class B の operator = に class Aを受けるのが無いYO っつーことでさー
0188デフォルトの名無しさん2013/12/03(火) 13:38:25.60
>>186
>>187
ありがとう、わかりました。
0189デフォルトの名無しさん2013/12/03(火) 17:35:36.36
CC++をwww上で解説してる人多いと思うけど
なぜに他と同じことしか書いてないの?
0190デフォルトの名無しさん2013/12/03(火) 17:41:18.64
知識がないから。
0191デフォルトの名無しさん2013/12/03(火) 17:43:50.86
Linuxでユニークなファイル名を生成しようと思いmkstemp()を使ったのはいいのだが、
iostreamでアクセスしているロジックがあって困っている。
CならファイルハンドルからFILE構造体の変換にfileno()があるが、iostreamの場合はどうしたらいいんだろう。
0192デフォルトの名無しさん2013/12/03(火) 17:45:50.25
どうでもいいけどfileno()は逆方向だった。fdopen()だね。
0193デフォルトの名無しさん2013/12/03(火) 17:46:20.78
>>190
じゃぁ、なぜ書くの?
0194デフォルトの名無しさん2013/12/03(火) 17:47:11.14
今でしょ
0195デフォルトの名無しさん2013/12/03(火) 17:49:21.55
class Foo{};
std::string classname = "Foo";

classname foo;

ってやれませんか?
0196デフォルトの名無しさん2013/12/03(火) 18:10:10.40
>>195
Foo foo;のFooを動的に変更したいということなら、諦めろ。
つーか、クラスの継承で事は足りないのか?
0197デフォルトの名無しさん2013/12/03(火) 20:38:10.20
#define DECLARE(C,name) C name

ていうのじゃダメなんだろうな、多分

DynamicClass* createClass(std::string){ ... }

という力技もあるけど、ダメなんだろうな、多分w
0198デフォルトの名無しさん2013/12/03(火) 20:40:30.25
>>193
本人たちに聞いてみたら?
0199デフォルトの名無しさん2013/12/03(火) 23:25:53.11
デリケートゾーンってどこ?
0200デフォルトの名無しさん2013/12/04(水) 01:03:47.75
禿げるところね
0201デフォルトの名無しさん2013/12/04(水) 01:12:51.87
ビラビラじゃないの?
0202デフォルトの名無しさん2013/12/04(水) 01:21:29.76
テカテカでもあるな
0203デフォルトの名無しさん2013/12/04(水) 23:02:50.25
>>195
C++という言語にはリフレクション機能がないので
>>197相当のことをするしかない
0204デフォルトの名無しさん2013/12/04(水) 23:14:11.00
そのためのテンプレート様ですよ
0205デフォルトの名無しさん2013/12/04(水) 23:15:05.60
実行時にやりたいんじゃないの
0206デフォルトの名無しさん2013/12/04(水) 23:23:05.59
素直にファクトリクラス用意すればいいんちゃう
0207デフォルトの名無しさん2013/12/05(木) 00:41:47.15
C++ってリフレクション機能ないのか。おいおい言語じゃないか
0208デフォルトの名無しさん2013/12/05(木) 01:27:14.00
そりゃ時代遅れのC++なんて絶滅寸前だからビャーネもやるきないだろ
0209デフォルトの名無しさん2013/12/05(木) 01:50:45.47
実行時にやるなんて甘えだからな
0210デフォルトの名無しさん2013/12/06(金) 03:16:39.91
リフレクション遅いからな
0211デフォルトの名無しさん2013/12/06(金) 07:58:46.82
コンパイラ実行時リフレクション
0212デフォルトの名無しさん2013/12/06(金) 10:20:50.82
リフレクションってなーに
0213デフォルトの名無しさん2013/12/06(金) 10:35:43.47
自己書き換えコード
0214デフォルトの名無しさん2013/12/06(金) 10:48:27.68
ク クラステンプレート じゃだめなのか?
0215デフォルトの名無しさん2013/12/06(金) 12:16:33.88
テンプレートは静的だから
0216デフォルトの名無しさん2013/12/06(金) 13:00:06.68
コンパイル時においては動的
0217デフォルトの名無しさん2013/12/06(金) 13:16:21.89
216は知覚障害車
0218デフォルトの名無しさん2013/12/06(金) 13:26:21.72
気ままだよな
0219デフォルトの名無しさん2013/12/06(金) 17:57:36.20
int c[10]={};
今日まで知らなかったw
0220デフォルトの名無しさん2013/12/06(金) 18:15:51.02
>>219
何それ?初期化しているの?
0221デフォルトの名無しさん2013/12/06(金) 18:19:59.09
書かなかったら0初期化されるんだよね
02222192013/12/06(金) 19:15:55.60
い いつのまに? って感じでしょw
0223デフォルトの名無しさん2013/12/06(金) 20:57:28.83
10年前からじゃね?
0224デフォルトの名無しさん2013/12/06(金) 20:58:42.81
少なくともC++は最初(1998年)からだな
Cは知らん
0225デフォルトの名無しさん2013/12/06(金) 21:48:02.85
CはGNU拡張だった。
0226デフォルトの名無しさん2013/12/06(金) 23:21:22.04
>>219
すげー。こんなやり方あるのか。
今までC++での配列の初期化はゼロフィルしてたよ
そして、Cではforでくるくるしてた
0227デフォルトの名無しさん2013/12/06(金) 23:46:16.19
こういう事ってどうやったらできる?
式が必要ですってなってできない

#define funcval_samp1 2, 5
#define funcval_samp2 5, 5

#define macro_func(val1, val2)

macro_func(funcval_samp1); // macro_func(2, 5);
macro_func(funcval_samp2); // macro_func(5, 5);
0228デフォルトの名無しさん2013/12/07(土) 00:03:45.26
#defineを使ってです
0229デフォルトの名無しさん2013/12/07(土) 00:13:57.66
#define funcval_sample (2,5)
#degine _adv_macro_func(a) macro_func #a
_adv_macro_func(funcval_sample);
0230デフォルトの名無しさん2013/12/07(土) 00:36:13.45
配列じゃ無くて構造体だが、Win32APIでよく聞くTipsとして
STARTUPINFO si={sizeof(STARTUPINFO)};
でSDK/ターゲットOSバージョンごとのcbフィールドを適切にセットしつつ他を0フィル
ってのもあるな。
0231デフォルトの名無しさん2013/12/07(土) 00:41:46.68
>>230
それはただ単に構造体の第1メンバを初期化してそれ以外を0セットってだけなんじゃ
0232デフォルトの名無しさん2013/12/07(土) 00:53:09.25
>>231
似たような文法で似たような用途の小ネタってだけですし。
0233デフォルトの名無しさん2013/12/07(土) 01:14:22.13
>>226
C++ポケットリファレンスという本にぽろっと出てました。目うろこでした。
ttp://www.amazon.co.jp/gp/product/4774157155
まだ少ししか読んでませんが、評判通りだと思います。
0234デフォルトの名無しさん2013/12/07(土) 01:34:30.44
>>230
STARTUPINFO si={sizeof(STARTUPINFO)};
でcbフィールドを適切にセットしつつ他を0フィルってなるのか?
cb位置って決まっているのか?
0235デフォルトの名無しさん2013/12/07(土) 01:41:06.96
>>234
STARTUPINFOは第1メンバがcbだろ
0236デフォルトの名無しさん2013/12/07(土) 01:43:20.27
#define macro_func(val1, val2, val3, val4) func(val1, val2, val3, val4)
#define macro_val23 2, 3

macro_func(1, macro_val23, 4);

こんな使い方はどうやればできますか?
0237デフォルトの名無しさん2013/12/07(土) 02:00:23.20
mblen にイテレータを使うにはどうしますか?
const char* でなくて istreambuf_iterator 使ってファイルストリームバッファをmblenに直接読ませたいんです
0238デフォルトの名無しさん2013/12/07(土) 02:07:09.93
>>234
Win32APIでcb(構造体サイズ)メンバを持つ場合、ほぼ第一メンバに来てるからな。
例外ってあったっけ?
0239デフォルトの名無しさん2013/12/07(土) 02:58:36.34
>>236
#define macro_func(val1, val23, val4) macro_nothing(macro_func2(val1, val23, val4))
#define macro_func2(val1, val2, val3, val4) func(val1, val2, val3, val4)
#define macro_nothing(a) a

#define macro_val23 2, 3

macro_average(1, macro_val23, 4);

これで警告も無し(Level4)でいけたけど
macro_func -> macro_func2で怖い事してる気がする
0240デフォルトの名無しさん2013/12/07(土) 03:00:05.12
あぁごめん
macro_func(1, macro_val23, 4);ね
0241デフォルトの名無しさん2013/12/07(土) 03:35:56.91
msのコンパイラじゃそれはとおらない
#define hage(hige,huge)
#define hoge 1,2
hage(hoge)は
hage((1,2),)として展開される
0242デフォルトの名無しさん2013/12/07(土) 04:24:52.20
>>241は荒らしなのでスルーしてください
0243デフォルトの名無しさん2013/12/07(土) 05:09:26.06
>>236
http://ideone.com/IcuNue
0244デフォルトの名無しさん2013/12/07(土) 12:50:31.56
>>241
VC++ EEでは通ってるよ
0245デフォルトの名無しさん2013/12/07(土) 12:59:01.13
>>243
> #define macro_val23 2, 3
この前提が崩れてる

ttp://ideone.com/QBYnoi
0246デフォルトの名無しさん2013/12/07(土) 13:12:30.04
macroがmankoになっただけじゃね?
0247デフォルトの名無しさん2013/12/07(土) 13:58:59.40
>>234
何故サイズ値をもつ必要があるのかを考えれば自明
0248デフォルトの名無しさん2013/12/07(土) 14:00:03.87
必要などない
マイクロソフトのセンスを疑う
0249デフォルトの名無しさん2013/12/07(土) 14:08:55.54
と、何にも作り出すことが出来なくてケチをつけるだけの人間が申しております
0250デフォルトの名無しさん2013/12/07(土) 14:19:16.08
必要ないことは認めるんだ
0251デフォルトの名無しさん2013/12/07(土) 14:31:44.97
は?どうして「必要ないことは認めてる」ことになるの?(笑)
こんなのPOSIXのbind関数に第3引数が必要なのと同じようなもので
ケチつけてもしようもないこと
0252デフォルトの名無しさん2013/12/07(土) 14:32:38.65
OSによってサイズが変わる事があるだろ
そのためのサイズだろ
■ このスレッドは過去ログ倉庫に格納されています