[過去ログ] 【初心者歓迎】C/C++室 Ver.106【環境依存OK】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: 2020/07/13(月)13:51 ID:WBkWHxcT(1/3) AAS
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
外部リンク:codepad.org
外部リンク:ideone.com

前スレ
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
2chスレ:tech
2: 2020/07/13(月)13:53 ID:WBkWHxcT(2/3) AAS
C言語を256倍使うための本
外部リンク:www.%61mazon.co.jp/dp/4756100430
詳説 C++ 第2版
外部リンク:www.%61mazon.co.jp/dp/479732743X
3: 2020/07/13(月)14:08 ID:p1lvDPnd(1/2) AAS
C++20
外部リンク:ja.cppreference.com
外部リンク:ja.cppreference.com

外部リンク:www.open-std.org
外部リンク:www.slideshare.net
外部リンク:ja.wikipedia.org
外部リンク:ja.wikipedia.org
4: 2020/07/13(月)14:09 ID:p1lvDPnd(2/2) AAS
禿
外部リンク:ja.wikipedia.org
外部リンク:ezoeryou.github.io
外部リンク:ezoeryou.github.io
外部リンク:ezoeryou.github.io
外部リンク:ezoeryou.github.io
5: 2020/07/13(月)14:14 ID:+mCuetAH(1/2) AAS
外部リンク:boostjp.github.io
外部リンク:cpprefjp.github.io
6: 2020/07/13(月)14:17 ID:+mCuetAH(2/2) AAS
Qt
外部リンク:www.qt.io
外部リンク:www.slideshare.net
wxWidgets
外部リンク:www.wxwidgets.org
外部リンク:github.com
Tcl/Tk
外部リンク:www.tcl.tk
7
(1): 2020/07/13(月)16:28 ID:srh9sya6(1/2) AAS
メンバに自クラスの配列を持つクラスのメンバ配列の初期化はc++ではどうやりますか?Javaでは下のように出来てます。

☆Javaでこうなっています
class A {
protected A[] node = new A[3];
}

☆c++でこうしたらエラーになりました。
@a.hpp
class A {
public:
static A node[];
省5
8
(1): 2020/07/13(月)16:38 ID:ny9O75E1(1/3) AAS
>>7
nodeは静的メンバ変数でいいの?
java同様、staticはすべてのクラスインスタンスで共通の変数って意味だけど。
9
(1): 2020/07/13(月)16:41 ID:srh9sya6(2/2) AAS
>>8
ダメだとは思ってましたが、つけないと不完全な型名は使用できませんと怒られました。
c++ではメンバに自クラスの変数がいるとダメなのですか?
10: 2020/07/13(月)17:07 ID:WBkWHxcT(3/3) AAS
うまくいく例
class A {
public:
static A *node;
};

A *A::node = new A[3];
11: 2020/07/13(月)17:22 ID:ny9O75E1(2/3) AAS
staticにしない例
class A {
public:
A *node;
A();
};

A::A() {
node = new A[3];
}
12: 2020/07/13(月)17:27 ID:ny9O75E1(3/3) AAS
あ、ループしちゃった
13: 2020/07/13(月)17:30 ID:KVdg44rD(1) AAS
>>9
> c++ではメンバに自クラスの変数がいるとダメなのですか?
そりゃだめだよ、もしそんなのができたら
class A {
A a;
int b;
};
A x;
とした時に x.b; x.a.b; x.a.a.b; ... みたいに無限に int b; を作る羽目になるから。
Javaなどは
省5
14
(2): 2020/07/13(月)17:33 ID:17o/9bhC(1/2) AAS
C++のクラス変数とJavaのクラス変数の違い、だっけ。
端的に「C++ではnewなしにクラス変数を宣言して使える」ようにするため。

Javaと対比しながら説明する能力がないんで中途半端で悪いけど。
15: 14 2020/07/13(月)19:29 ID:17o/9bhC(2/2) AAS
× 変数を宣言
○ 変数を定義

中途半端な上に間違っててすまぬ。
あまつさえ細かい訂正のために貴重な投稿枠の浪費までも。
16
(1): 2020/07/14(火)08:27 ID:bhhAeN2N(1) AAS
>>14
クラス変数の問題ではなく、クラスのメンバとして配列を宣言した場合にC++では配列の実体をメンバとして持つのに対し、Javaでは配列の実体は別のところに作られて参照だけを持つというところでないの?
17: 2020/07/14(火)08:30 ID:5kZc9hZE(1) AAS
7の人です
みなさんありがとうございます
別のやり方考えます
18: 2020/07/14(火)09:28 ID:PHX4w74f(1) AAS
>>16
配列は関係ない
C++はクラス型のクラス変数を定義すると実体を持つから自分自身を定義できないってだけ
JavaやC#は実体じゃなくてポインタを持つだけだから問題ないってこと
19
(1): 2020/07/14(火)12:52 ID:Mma3I+br(1) AAS
C/C++ はヌルポを敢えて使う
20
(2): ◆QZaw55cn4c 2020/07/14(火)20:49 ID:M3PBKw+D(1) AAS
>>19
確かに仮想関数じゃなかったら普通に this に 0 を入れてもコールできますね…
外部リンク:ideone.com
21: 2020/07/14(火)23:49 ID:PYLNqhFb(1) AAS
未定義動作
22: はちみつ餃子 ◆8X2XSCHEME 2020/07/15(水)01:04 ID:hr2ndtrb(1/3) AAS
>>20
わかりやすく変な挙動に突入する例。
外部リンク:wandbox.org
23
(3): 2020/07/15(水)12:07 ID:cL9c5hZ8(1/3) AAS
enum {hoge, fuga, hage};

hoge==0
fuga==1
hage==2
として使えるとして
0,1,2とかの数字から実行時にhoge,fuga,hageの名前を知りたい時って
何か便利なインターフェースありますか?
みんな毎回線形探索のコード描くみたいにやってる?
24: 2020/07/15(水)12:39 ID:fkxllX2L(1) AAS
>>23
連番なら配列に入れときゃいい
番号飛んでいて…
・件数少ないなら線形サーチ
・件数多いならハッシュとかバイナリサーチとか
25: 2020/07/15(水)12:50 ID:Gd6Zo+Db(1) AAS
>>23
VSだったらデバッガで名前表示されるけど
あれ列挙に名前までつけた時だけだっけな
26: 2020/07/15(水)13:02 ID:cL9c5hZ8(2/3) AAS
連番じゃないときとか
結構でかい番号だったりするときは困りますね
27: 2020/07/15(水)13:08 ID:ONqo+DKP(1) AAS
##演算子でどうにかなるんじゃね
28: 2020/07/15(水)13:14 ID:jM1x+GOc(1) AAS
IT掲示板群 外部リンク[aspx]:x0000.net

学術の巨大掲示板群 - アルファ・ラボ 外部リンク:x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
外部リンク[aspx]:x0000.net
UIライブラリ (C#, 2D) を作ったよ
外部リンク[aspx]:x0000.net
連続と離散を統一した!
外部リンク[aspx]:x0000.net
省12
29: 2020/07/15(水)13:38 ID:cL9c5hZ8(3/3) AAS
線形探索するにしても enum 用に foreach もあるのかなと思ったのですが
外部リンク:sanichi999.hateblo.jp
こんな感じですね
名前とか同じことを何度も書いてる気がしてしまうのと
割と定型な気がするのでコンパイラが提供してくれてないかなと思ったで質問しました
30: はちみつ餃子 ◆8X2XSCHEME 2020/07/15(水)15:30 ID:hr2ndtrb(2/3) AAS
実行時に列挙定数の名前の文字列が欲しいことがそんなにあるかな?
デバッグプリント用途くらいしか思いつかんのだけど。
31
(2): 2020/07/15(水)16:14 ID:LgiIyt9Z(1) AAS
vector<int> a = {8, 1, 9, 5, 7, 3};
があるときに例えば
vector<int> b = a{0, 2, 5};
とかしたら
b が {8, 9, 3} の配列みたいになってくれる書き方ってありますか?
32: 2020/07/15(水)16:43 ID:stUpixMt(1) AAS
vector<int> b = {a[0], a[2], a[5]};
33
(1): はちみつ餃子 ◆8X2XSCHEME 2020/07/15(水)20:59 ID:hr2ndtrb(3/3) AAS
>>31
そういう関数を書けばええだけちゃうの

外部リンク:wandbox.org
34: 2020/07/15(水)23:08 ID:4eO2mC8f(1) AAS
>>31 for(int& e: b) e = a[e];
35: 2020/07/16(木)12:17 ID:rBscjMJk(1) AAS
>>23
msvc/clangのc++17限定でよければ、nameof c++というライブラリがある。
36
(2): 2020/07/16(木)12:58 ID:Bj5j4Y6i(1) AAS
>>33
外部リンク:ideone.com

for(auto t: {indices...}) std::cout << source[t] << std::endl;
だと動くのですが
for(T t: {indices...}) std::cout << source[t] << std::endl;
だとエラーになります
どうして?
37: はちみつ餃子 ◆8X2XSCHEME 2020/07/16(木)13:49 ID:MICl0UeU(1) AAS
>>36
エラーメッセージを見ればわかるやろ。
T はパラーメーターパックであって、展開せずに使うということはできへんのや……。
38: 2020/07/16(木)15:12 ID:sYAaUXpT(1) AAS
>>36
memo
外部リンク:ideone.com
外部リンク:theolizer.com
39: 2020/07/17(金)13:55 ID:xXsIieN6(1) AAS
テンプレートが型付マクロにしかみえません
眼科に行った方が良いですか?
40: 2020/07/17(金)14:44 ID:p55TjBUs(1) AAS
型付であることこそ重要です
41: 2020/07/17(金)17:27 ID:LIcKojh8(1) AAS
マクロといってのcのマクロではなくlispのマクロ的な機能
まあコンパイル時の制限はあるけど
42
(1): 2020/07/18(土)01:05 ID:vSXqjqjP(1) AAS
Win32APIでコンボボックスの値をオーナードローしているんですが、wchar_tで項目追加すると文字の描画ができるんですが、
c_str()だと文字化けします。何故ですか?

・WM_INITDIALOG
 文字化けしないケース
  const wchar_t *a = L"あいうえお";
  SendMessage(hForeColor, CB_ADDSTRING, 0, LPARAM(a));

 文字化けするケース
  std::wstring b = L"あいうえお";
  SendMessage(hForeColor, CB_ADDSTRING, 0, LPARAM(b.c_str()));

・WM_DRAWITEM
省1
43: 2020/07/18(土)01:43 ID:2xoJksuz(1) AAS
表示する時にはbが解放されてるんじゃないの?
44: 2020/07/18(土)02:35 ID:IdAxqtyn(1) AAS
オーナードローの時、CBS_HASSTRINGSスタイル指定しないと、そんな感じになるっぽいね
CB_ADDSTRINGメッセージに書いてあるね
45
(1): 2020/07/18(土)13:25 ID:94poIsAY(1/2) AAS
1つの言語をある程度やりこまないと能力値がリセットされますか?
46: 2020/07/18(土)13:38 ID:uRU3MGLx(1) AAS
理解する能力と
使いこなす能力と
創造する能力は
全部別
47: 2020/07/18(土)15:42 ID:94poIsAY(2/2) AAS
理解力のことです
ごめんなさい
48: 2020/07/18(土)15:58 ID:qVma+RcU(1) AAS
リセットはされない。
複数言語を学ぶときは並行にやって混乱するか順番にやって混乱するかのどちらか。
自分に向いた方を選べ。
49: 2020/07/18(土)16:14 ID:C0jdHcgs(1) AAS
ある程度やりこまなければある程度落ちるのは常識
ある程度やりこめばある程度上がるのも常識
50: 2020/07/18(土)17:22 ID:Bt+NBO6d(1) AAS
>>45
リセットされたのではなく、自分が理解できていたと思い込んでいただけで実際の理解がその程度だったということに気づかされただけだと思うぞ。
51: 2020/07/18(土)18:01 ID:51enBbxV(1) AAS
あるある
52
(1): 2020/07/18(土)18:20 ID:sJrDCvPM(1/2) AAS
fopenでccs=utf-8を指定して改行コードのCRLFをfputwsで書き込んだら
CRCRLFになったんですけど。バグですか?
53: 2020/07/18(土)18:38 ID:yqiH8/gB(1) AAS
appendで開いてたり
54: 蟻人間 ◆T6xkBnTXz7B0 2020/07/18(土)18:39 ID:5h3AvQ+O(1) AAS
>>52
WindowsではLFがCR LFに変換されるので、仕様ですよ。
CRを出力しないか、バイナリファイルとして出力して下さい。
55: 2020/07/18(土)19:04 ID:sJrDCvPM(2/2) AAS
何と!
56
(1): 2020/07/18(土)19:10 ID:tp8HW1uL(1/2) AAS
バイナリじゃなく、テキスト処理してる場合は、
各OS のAPI を使った時に、

Windows なら、CRLF になって、
Linux なら、LF になるのだろう

Ruby でもそう。
Windows にインストールしたものは、CRLF になって、
Linux にインストールしたものは、LF になる
57: 2020/07/18(土)19:19 ID:zDePOjuW(1/2) AAS
LFがCRLFになるんじゃなくて\nがCRLFになっただけじゃないのか?
58: 蟻人間 ◆T6xkBnTXz7B0 2020/07/18(土)19:26 ID:NJ+LQ+vq(1) AAS
\nがLFなんだよ。
59: 2020/07/18(土)19:38 ID:zDePOjuW(2/2) AAS
\x0aを出力してみればはっきりする。
60: 56 2020/07/18(土)19:57 ID:tp8HW1uL(2/2) AAS
Global New Line みたいな指定もある。
\n が、OS によって自動的に切り替わるもの

Windows なら、CRLF になって、
Linux なら、LF になる
61: 2020/07/19(日)06:39 ID:wsDBDsuq(1) AAS
\nはコンパイラが読み込んだ時点でLFに変換される
そうでないと、'\n'みたいな文字を読み込んだ時に
保存に2バイト必要になってしまう
62
(1): 2020/07/21(火)11:50 ID:IJfaFmgd(1) AAS
C++のenumの仕様について質問させてください

enum Aとenum Bが定義されていた時、
void func(enum A);
void func(enum B);
のようにオーバーロードできるでしょうか。
63: 2020/07/21(火)11:58 ID:+OCbOnRh(1) AAS
enum class
64: 蟻人間 ◆T6xkBnTXz7B0 2020/07/21(火)17:34 ID:w/y1zMfY(1) AAS
>>62
Twitterリンク:katahiromz
可能みたいだよ。
Twitterリンク:5chan_nel (5ch newer account)
65: 2020/07/21(火)23:37 ID:4GG7eaxB(1) AAS
main が無いって言われたω
外部リンク:ideone.com
66: 2020/07/22(水)00:40 ID:JDoVEEwE(1) AAS
正確にはなんて言われた?
67: 2020/07/22(水)01:34 ID:JL2g1NmT(1) AAS
ここのひとか
2chスレ:tech
68
(1): 2020/07/31(金)02:13 ID:zHNUGG0v(1/2) AAS
最近C++勉強し始めて疑問に思ったので教えて下さい
std::vector<int>vec;
auto result = std::find(vec.begin(), vec.end(),3);

上記のようにvectorを宣言だけで初期化せずにfind関数内でbegin()、end()を使用しても例外が発生しません
これは範囲外の要素にアクセスしているわけじゃないという理解でよろしいでしょうか
69
(1): 2020/07/31(金)02:35 ID:E2vmFTLm(1) AAS
そうだね
というか最初はbegin=endだから、findで一度もループ処理が発生しないだけ
70
(1): 2020/07/31(金)08:38 ID:UG/y1RVK(1) AAS
>>68
自分で明示的に初期化していないだけで、vectorの変数を宣言しただけで勝手に(サイズが0のvectorとして)初期化してくれる。
vectorのコンストラクタがそれをやってくれている。
71: 2020/07/31(金)10:00 ID:zHNUGG0v(2/2) AAS
>>69-70
わかりやすい説明ありがとうございました
なんかスッキリしました
72: 2020/07/31(金)11:04 ID:N0eufbNj(1) AAS
#include <vector>
#include <algorithm>
#include <iostream>

int main() {
std::vector<int>vec;
vec.reserve(10);
auto result = std::find(vec.begin(), vec.end(),3);
std::vector<int>vec2;
vec2.resize(10);
auto result2 = std::find(vec2.begin(), vec2.end(),3);
省2
73: 2020/08/04(火)14:37 ID:Rtr7oft5(1) AAS
boostっていうやつはもう下火なんですか?
74: はちみつ餃子 ◆8X2XSCHEME 2020/08/04(火)20:36 ID:tYSlSmQK(1) AAS
んなわけない
75: 2020/08/04(火)22:16 ID:GxIT23CH(1) AAS
極力使わずに済ませたい
76: 2020/08/05(水)08:45 ID:FS19WAoY(1) AAS
下火っていうか
調理場にあるラップのようなもので特に意識されることはないけど欠かすことのできないもの
でもラップを使った料理っていうとどうしてもお手軽感がぬぐえない
プロの調理師はこういうものはできるだけ人目につかないようにする
77: 2020/08/05(水)12:41 ID:2ArdD7yz(1) AAS
ラップは隠さんだろ
化調でどうよ
78: 2020/08/06(木)09:55 ID:oJAb3tlF(1) AAS
聞き方が悪かった
boostは習熟したほうがいいですか?
79: 2020/08/06(木)10:17 ID:5aD4OAJs(1) AAS
あなたのやりたいことに役立つのなら。
80: 2020/08/06(木)11:01 ID:6QU45l4b(1) AAS
boostじゃなくても同じことが出来るものがあったら後者を選ぶな
なんでだろ自分でもわからんω
81: 2020/08/06(木)11:13 ID:YI93igBY(1) AAS
いまならasioなどのために使うのでは。
そしてネットワーキングTSが標準に入ると、また使わなくなる。
そういうサイクルがあるのでは。
82
(1): 2020/08/07(金)21:54 ID:3kAM9W6f(1) AAS
>>42
win32api使うならTCHAR使いましょうよ
83: 2020/08/08(土)02:45 ID:sjyRGzAl(1) AAS
MBCS対応する気ないならTCHAR使う意味ないよ
MBCS_Support_Deprecated_In_MFCだし
84
(1): 2020/08/08(土)07:16 ID:f+HIJ1ud(1) AAS
WCHAR決め打ちで行くんならDrawTextWにしないと
85: 2020/08/08(土)10:09 ID:noFfmCPy(1) AAS
>>82
TCHARはオワコン
全く不要
86
(1): 2020/08/08(土)11:52 ID:xwl14JrI(1/2) AAS
じゃあ何使うか言え
87: 2020/08/08(土)12:49 ID:jGasFcRb(1/2) AAS
ナウはQuattroかな
88
(1): 2020/08/08(土)13:08 ID:Lqpd9lsB(1) AAS
>>86
wchar_tでいいよ
ちなみに>>84みたいなのはバカのやること
89: 2020/08/08(土)13:25 ID:xwl14JrI(2/2) AAS
>>88
ありがとう
90: 2020/08/08(土)15:09 ID:OT1M6D83(1/2) AAS
外部リンク:ja.uncyclopedia.info

これは素晴らしいな。
91: 2020/08/08(土)15:39 ID:pp0rnVLU(1) AAS
外部リンク:ja.wikipedia.org
92: 2020/08/08(土)16:39 ID:/RuHG5bH(1) AAS
C++11の前はboostめっちゃ使ってました
93: 2020/08/08(土)16:52 ID:OT1M6D83(2/2) AAS
Debianがgcc8なのでfilesystemをboostのほう使うとか。
互換性が動機という場合もありますね。
94
(1): 2020/08/08(土)19:24 ID:Sbg9T/ud(1) AAS
C++ の仕様に関する質問です。

OpenGL では、

typedef unsigned char GLboolean;
#define GL_FALSE 0
#define GL_TRUE 1
void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized,
             GLsizei stride, const void *pointer);
となっていますが、
  glVertexAttribPointer(locAttr, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
と書いた場合、第四引数の GL_FALSE は 0 なので、int 型の整数リテラル(32BIT)ですが、対応する仮引数は、
省7
95: 2020/08/08(土)20:40 ID:jGasFcRb(2/2) AAS
その関数はCの関数なので、そもそもマンぐり返されてないし、より適合するオーバーロード関数の存在なんて考慮してないんじゃね?
96
(1): 2020/08/08(土)21:31 ID:Sl6pvmJG(1) AAS
>>94
> unsigned char 型の仮引数に、int 型の変数を渡そうとすれば、不適格に成り、その関数は対象から除外されます。

これが誤解なのでは?
暗黙変換されるでしょ。
97
(1): 2020/08/09(日)00:18 ID:5wTPapRC(1/5) AAS
>>96
確認しました。charの仮引数の場所に、int 変数を実引数にして渡しても、
エラーも警告も出ませんでした。
関数呼び出しだけでなく、
int i = 0x123456;
char c = i;
としてもエラーも警告も出ませんでした。
テストは、VS2019のC++で行いました。
98
(1): はちみつ餃子 ◆8X2XSCHEME 2020/08/09(日)00:32 ID:ayHdPpdd(1) AAS
整数型同士はどの組み合わせでも暗黙の型変換はされるんじゃね。
変換後の型が符号付きかつ、変換後の型が表現できる範囲に収まらない値だったときの挙動が未定義ではあるので、
狭い方向への変換のときに警告くらいは出してくれることもあるみたいだが、
オーバーロードの解決の際に排除されることはない。
99
(1): 2020/08/09(日)12:09 ID:5wTPapRC(2/5) AAS
>>98
ついでに、お聞きしたいのですが、
class CBase {・・・};
class CDerived : public CBase {・・・};
の場合、
CDerive* ---> CBase*
への変換は標準変換は有りますが、
CBase* ---> CDerive*
への変換は標準変換は有りませんよね。
しかし、
省8
100
(1): 2020/08/09(日)12:11 ID:q7SdW+2C(1/2) AAS
>>97
viable function とか言うから規格上の確認がしたいのかと思ってたけど、そこは実験でいいのか。
1-
あと 902 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.508s*