探検
0からの、超初心者C++相談室
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/11/12(月) 14:55:13.35ID:Tf74ZWQr 何にも知らない0からの出発、超初心者のためのC++相談室
335デフォルトの名無しさん
2021/06/18(金) 19:42:19.79ID:kejK9s3z >>327
ちなコンセプト版(C++20対応コンパイラが必要)
#include <type_traits>
template <class T>
concept UnsignedInt = std::is_same_v<T, unsigned int>;
template <UnsignedInt T>
void foo(T value)
{
}
int main()
{
// foo((int)1);
foo((unsigned int)1);
}
(インデントは全角なので注意)
まぁどっちも難しいと思うけど無理に理解せず流した方がいいと思う(それか制限あきらめるか
ちなコンセプト版(C++20対応コンパイラが必要)
#include <type_traits>
template <class T>
concept UnsignedInt = std::is_same_v<T, unsigned int>;
template <UnsignedInt T>
void foo(T value)
{
}
int main()
{
// foo((int)1);
foo((unsigned int)1);
}
(インデントは全角なので注意)
まぁどっちも難しいと思うけど無理に理解せず流した方がいいと思う(それか制限あきらめるか
336デフォルトの名無しさん
2021/06/18(金) 19:43:08.40ID:AVf6Ht59337デフォルトの名無しさん
2021/06/18(金) 19:57:29.32ID:kejK9s3z338デフォルトの名無しさん
2021/06/18(金) 20:01:53.90ID:zIhiG+wy あんまり詳しくない俺にはこういうのしか思いつかん。
__my_func() は直接呼ばないお約束にしておいて、static_assert で。
template のところは、書き換えは雰囲気でできると思うけど・・・
#include <type_traits>
#include <iostream>
unsigned int __my_func(unsigned int a) { return a * 2; }
template <class T> unsigned int my_func (T a) {
static_assert(std::is_same<T, unsigned int>::value == true, "is not uint.");
return __my_func(a);
}
int main() {
int a = 2;
unsigned int b = 2;
//std::cout << my_func(1) << std::endl; // assert
//std::cout << my_func(a) << std::endl; // assert
std::cout << my_func(1U) << std::endl;
std::cout << my_func(b) << std::endl;
}
__my_func() は直接呼ばないお約束にしておいて、static_assert で。
template のところは、書き換えは雰囲気でできると思うけど・・・
#include <type_traits>
#include <iostream>
unsigned int __my_func(unsigned int a) { return a * 2; }
template <class T> unsigned int my_func (T a) {
static_assert(std::is_same<T, unsigned int>::value == true, "is not uint.");
return __my_func(a);
}
int main() {
int a = 2;
unsigned int b = 2;
//std::cout << my_func(1) << std::endl; // assert
//std::cout << my_func(a) << std::endl; // assert
std::cout << my_func(1U) << std::endl;
std::cout << my_func(b) << std::endl;
}
339はちみつ餃子 ◆8X2XSCHEME
2021/06/18(金) 20:30:53.23ID:JA4mPV9U >>334
> お前のコードだと戻り値voidにしか出来んだろ
なんか変なこといってると思ったらそこがすれ違いか。
std::enable_if のテンプレート引数の二個目を省略しなければ何にでも出来るよ。
(std::enable_if の type は void に固定されているわけではない。)
クラスやコンストラクタは返却値がないから enabler を使うんであって、
普通の関数のときは返却値のほうで制御するのが普通だと思うぞ。
> お前のコードだと戻り値voidにしか出来んだろ
なんか変なこといってると思ったらそこがすれ違いか。
std::enable_if のテンプレート引数の二個目を省略しなければ何にでも出来るよ。
(std::enable_if の type は void に固定されているわけではない。)
クラスやコンストラクタは返却値がないから enabler を使うんであって、
普通の関数のときは返却値のほうで制御するのが普通だと思うぞ。
340はちみつ餃子 ◆8X2XSCHEME
2021/06/18(金) 20:33:26.89ID:JA4mPV9U341デフォルトの名無しさん
2021/06/18(金) 20:39:10.69ID:kejK9s3z そうなんか、そういえばいつも自作alias使ってたから気付かんかったわ
>普通の関数のときは返却値のほうで制御するのが普通
別に戻り値でも引数でもいいが、クッソ読みづらいと思うけどな
あとそれならこういうスレで第2引数省略すんなよ、初心者惑わしたいのか?
>普通の関数のときは返却値のほうで制御するのが普通
別に戻り値でも引数でもいいが、クッソ読みづらいと思うけどな
あとそれならこういうスレで第2引数省略すんなよ、初心者惑わしたいのか?
3421
2021/06/19(土) 15:34:05.42ID:kvHrZ2tI ここは中級者が、お互いを煽り合うスレでは無い、ということを理解して欲しい。
343デフォルトの名無しさん
2021/06/19(土) 16:53:11.57ID:zDrgWeBe 引数同じで戻り値だけ違う関数を造って使い訳たい
344デフォルトの名無しさん
2021/06/19(土) 17:01:53.54ID:xVp2TfT/ >>342
俺ははちみつが書くより先に同じこと(enable_if)思ってたけど、このスレには不適切だと思って書くのやめてたんだけどな
あんな不適切で不親切な回答(テンプレートとSFINAEとか、はちみつも使いこなせてないようなものを使う上に戻り値の変更方法も、自身が言ってるコンセプト版も書かない)に怒っちゃいかんのか
俺ははちみつが書くより先に同じこと(enable_if)思ってたけど、このスレには不適切だと思って書くのやめてたんだけどな
あんな不適切で不親切な回答(テンプレートとSFINAEとか、はちみつも使いこなせてないようなものを使う上に戻り値の変更方法も、自身が言ってるコンセプト版も書かない)に怒っちゃいかんのか
345はちみつ餃子 ◆8X2XSCHEME
2021/06/19(土) 17:30:35.18ID:/f53/cxR >>344
そこらへんが少しばかり詳細なら初心者に理解できる内容になるという主張?
少々の書き方の工夫で初心者がわかるように解説できるわけないだろ。
関連知識も含めればちょっとした本一冊分くらいにはなる内容なんだから。
「まずはテンプレートの知識が必要ですね」ということが初心者に対する解で、
そこに至る前にごちゃごちゃしたことを詰め込むのは不親切だと思うわ。
そこらへんが少しばかり詳細なら初心者に理解できる内容になるという主張?
少々の書き方の工夫で初心者がわかるように解説できるわけないだろ。
関連知識も含めればちょっとした本一冊分くらいにはなる内容なんだから。
「まずはテンプレートの知識が必要ですね」ということが初心者に対する解で、
そこに至る前にごちゃごちゃしたことを詰め込むのは不親切だと思うわ。
346デフォルトの名無しさん
2021/06/19(土) 17:34:51.32ID:xVp2TfT/ >>343
戻り値だけ違う同名関数は作れないのでテンプレートにするか、引数で戻り値を指定するしかないとおも
template <typename T>
T hoge();
template <>
int hoge<int>() {}
template <>
float hoge<float>() {}
hoge<int>();
hoge<float>();
もしくは
int hoge(int) {}
float hoge(float) {}
?hoge(int());
hoge(float());
戻り値だけ違う同名関数は作れないのでテンプレートにするか、引数で戻り値を指定するしかないとおも
template <typename T>
T hoge();
template <>
int hoge<int>() {}
template <>
float hoge<float>() {}
hoge<int>();
hoge<float>();
もしくは
int hoge(int) {}
float hoge(float) {}
?hoge(int());
hoge(float());
347デフォルトの名無しさん
2021/06/19(土) 18:00:39.76ID:kvHrZ2tI 1 + 1 = 1
348デフォルトの名無しさん
2021/08/24(火) 01:28:35.73ID:WM1jAzNs https://pastebin.pl/view/e395f5ca
operator関数の動きがよくわからないんですが
tmp.x = x + p.x;
これの p.xと xとtempはどのオブジェクトのことを指してるんでしょうか?
operator関数の動きがよくわからないんですが
tmp.x = x + p.x;
これの p.xと xとtempはどのオブジェクトのことを指してるんでしょうか?
349はちみつ餃子 ◆8X2XSCHEME
2021/08/24(火) 01:50:15.06ID:MkJE9y3A >>348
operator+ は演算子 + の実体として機能する。
故に p1+p2 は p1.operator+(p2) と書いた場合と完全に同じ。
tmp はもちろんこの関数内で宣言した tmp 変数だし、
p は渡された引数 (この場合は p2) のコピーなので p.x には 6 が入ってるね。
operator+ は演算子 + の実体として機能する。
故に p1+p2 は p1.operator+(p2) と書いた場合と完全に同じ。
tmp はもちろんこの関数内で宣言した tmp 変数だし、
p は渡された引数 (この場合は p2) のコピーなので p.x には 6 が入ってるね。
350デフォルトの名無しさん
2021/08/24(火) 02:43:37.56ID:WM1jAzNs351デフォルトの名無しさん
2021/08/24(火) 03:37:20.26ID:gGQMgsWd 掛け算の*と、
色々を示す*が
同じ*なんで困っていますが、どうしたらいいんでしょうか?
色々を示す*が
同じ*なんで困っていますが、どうしたらいいんでしょうか?
352デフォルトの名無しさん
2021/08/24(火) 03:55:09.38ID:jikR3Y9f353デフォルトの名無しさん
2021/08/24(火) 04:29:07.93ID:gGQMgsWd ありがとうございます。
c++ のワイルドカード記号ってなんでしょうか?
c++ のワイルドカード記号ってなんでしょうか?
354デフォルトの名無しさん
2021/08/24(火) 04:33:24.90ID:jikR3Y9f 言語そのものには無いよー
エディタやIDEで検索するのには使えることもあるが
エディタやIDEで検索するのには使えることもあるが
355デフォルトの名無しさん
2021/08/24(火) 04:45:36.01ID:gGQMgsWd 教えてもらって、勉強になりました。
ありがとうございました。
ありがとうございました。
356デフォルトの名無しさん
2021/08/24(火) 07:22:03.54ID:WM1jAzNs https://pastebin.pl/view/31e451ad
クラスの型変換と型変換用のコンストラクタの意味が全く分からないのですが
これをすると何が得なのでしょうか?10行目は普通のコンストラクタに見えますがなぜ変換用?
入門書に載ってるコードなのですがエラーで動作もせず何がなんだか分かりません…
クラスの型変換と型変換用のコンストラクタの意味が全く分からないのですが
これをすると何が得なのでしょうか?10行目は普通のコンストラクタに見えますがなぜ変換用?
入門書に載ってるコードなのですがエラーで動作もせず何がなんだか分かりません…
357デフォルトの名無しさん
2021/08/24(火) 15:23:13.01ID:jcrsR8Np 2つ目のprivateはpublicの間違いじゃね?
あと変換は、単に引数一つだけを受け取るコンストラクタは
自動的に?暗黙のキャストにも使われる、というだけ(それを禁止する方法もあるが
あと変換は、単に引数一つだけを受け取るコンストラクタは
自動的に?暗黙のキャストにも使われる、というだけ(それを禁止する方法もあるが
358デフォルトの名無しさん
2021/08/25(水) 07:15:15.42ID:dwOa++JV >>357
おかげさまで動きました。ありがとうございます。
でもいまいち型変換の意味が分からないのですが
operator 型名()return 変数を定義するとどの変数にも代入出来るようになるってことですか?
おかげさまで動きました。ありがとうございます。
でもいまいち型変換の意味が分からないのですが
operator 型名()return 変数を定義するとどの変数にも代入出来るようになるってことですか?
359デフォルトの名無しさん
2021/08/25(水) 15:58:08.24ID:3/bOIe3o C++ キャスト でぐぐるといいよ
(キャストはCにもあるけど)
(キャストはCにもあるけど)
360はちみつ餃子 ◆8X2XSCHEME
2021/08/25(水) 22:29:05.16ID:/Q8zinJC >>358
型変換はその名前の通り型を変換する。 変換と同等の処理を普通の関数とし
て書いてもかまわないんだが、変換関数 (conversion function) または変換
コンストラクタ (converting constructor) が定義されていると暗黙の型変換
が適用される文脈では勝手に適用して変換してくれるので便利。
例えば以下のように foo 型のオブジェクトを受けとる文脈で bar 型のオブジェ
クトを渡しても通るのは変換が適用されるから。
struct foo {};
struct bar {
operator foo() {
return foo();
}
};
void func(foo) {}
int main(void) {
foo x = bar();
func(bar());
}
型変換はその名前の通り型を変換する。 変換と同等の処理を普通の関数とし
て書いてもかまわないんだが、変換関数 (conversion function) または変換
コンストラクタ (converting constructor) が定義されていると暗黙の型変換
が適用される文脈では勝手に適用して変換してくれるので便利。
例えば以下のように foo 型のオブジェクトを受けとる文脈で bar 型のオブジェ
クトを渡しても通るのは変換が適用されるから。
struct foo {};
struct bar {
operator foo() {
return foo();
}
};
void func(foo) {}
int main(void) {
foo x = bar();
func(bar());
}
361デフォルトの名無しさん
2021/08/26(木) 01:12:00.54ID:BlNdGFU0 >>360
ようやくイメージできてきました。ありがとうございます!
ようやくイメージできてきました。ありがとうございます!
362デフォルトの名無しさん
2021/08/26(木) 06:25:31.31ID:C2TXXzWD363デフォルトの名無しさん
2021/08/26(木) 09:12:40.22ID:QSgOZ0Rh なんのこっちゃ
364デフォルトの名無しさん
2021/08/27(金) 08:15:52.67ID:ue9a70Za コマンドライン引数の意味が全く分からないのですが
Visualstudioを使っているからでしょうか?
それとも、コマンドプロンプトの使い方を理解できないでしょうか?
https://programming.pc-note.net/c/commandline.html
ここも参照にしたのですが何が得で何ができてるのかよく分かりません。
コマンドラインってVSでデバッグ無しで実行をした時に出る黒い画面ではないですよね?
質問ばかりですいませんが本当に何も分からないのでお願いします。
Visualstudioを使っているからでしょうか?
それとも、コマンドプロンプトの使い方を理解できないでしょうか?
https://programming.pc-note.net/c/commandline.html
ここも参照にしたのですが何が得で何ができてるのかよく分かりません。
コマンドラインってVSでデバッグ無しで実行をした時に出る黒い画面ではないですよね?
質問ばかりですいませんが本当に何も分からないのでお願いします。
365デフォルトの名無しさん
2021/08/27(金) 11:14:47.31ID:xylLBHc1 >>364
メモ帳でファイルをドラッグアンドドロップで開く例が紹介されているが
これはWindowsのShellであるExplorerがexefileに対して登録されているドラッグアンドドロップハンドラーを処理してドロップしたファイルのフルパスを文字列として起動するプロセス環境のコマンドラインパラメータとして渡している
黒い画面(コマンドプロンプト)にもExplorerとは違うがプロセスの起動とパラメータを渡す機能が実装されている
起動するexefileに続けてスペースを開けたあと記入した文字列がそのままパラメータとして渡される
ファイル名以外にも自由に渡せるためプログラムの動作を指定したり変更する目的で使用される
あなたが作成するプログラムでシェルから渡されたコマンドラインパラメータを確認する方法はそのページにもある通りだ
コマンドラインパラメータを活用してバラ色の人生を満喫してくれ
メモ帳でファイルをドラッグアンドドロップで開く例が紹介されているが
これはWindowsのShellであるExplorerがexefileに対して登録されているドラッグアンドドロップハンドラーを処理してドロップしたファイルのフルパスを文字列として起動するプロセス環境のコマンドラインパラメータとして渡している
黒い画面(コマンドプロンプト)にもExplorerとは違うがプロセスの起動とパラメータを渡す機能が実装されている
起動するexefileに続けてスペースを開けたあと記入した文字列がそのままパラメータとして渡される
ファイル名以外にも自由に渡せるためプログラムの動作を指定したり変更する目的で使用される
あなたが作成するプログラムでシェルから渡されたコマンドラインパラメータを確認する方法はそのページにもある通りだ
コマンドラインパラメータを活用してバラ色の人生を満喫してくれ
366デフォルトの名無しさん
2021/08/27(金) 14:23:11.73ID:8dQk5Ix1 getopt
367デフォルトの名無しさん
2021/08/27(金) 23:33:15.78ID:cMIVTei2 例えば、デスクトップにショートカットを作る。
コマンドプロンプトを起動して、Ruby スクリプト・a.rb を実行する
リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
注意。書き込めないので、間に@を入れました
作業フォルダ
C:\Users\Owner\Desktop
a.rb 内には、puts ARGV
(ARGV は配列で、そこにコマンドライン引数が渡ってくる)
と書いておいて、ショートカットに、フォルダx・ファイルb.txt をdrag&drop すると、
コマンドプロンプトが起動して、以下のように表示される
C:\Users\Owner\Desktop\x
C:\Users\Owner\Desktop\b.txt
コマンドプロンプトを起動して、Ruby スクリプト・a.rb を実行する
リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
注意。書き込めないので、間に@を入れました
作業フォルダ
C:\Users\Owner\Desktop
a.rb 内には、puts ARGV
(ARGV は配列で、そこにコマンドライン引数が渡ってくる)
と書いておいて、ショートカットに、フォルダx・ファイルb.txt をdrag&drop すると、
コマンドプロンプトが起動して、以下のように表示される
C:\Users\Owner\Desktop\x
C:\Users\Owner\Desktop\b.txt
368デフォルトの名無しさん
2021/10/06(水) 22:36:41.57ID:OG+j1FAK const char* const str[]={"aaa","bbb","ccc"}
constの効果を教えてほしいです
後ろのstrの前のconstは付けると
const str[0]="dddd"って出来なくなるのは分かったのですが
先頭のconstが分かりません
constの効果を教えてほしいです
後ろのstrの前のconstは付けると
const str[0]="dddd"って出来なくなるのは分かったのですが
先頭のconstが分かりません
369デフォルトの名無しさん
2021/10/06(水) 22:51:34.11ID:ItOX1MR6 str[0][0]='d';
370デフォルトの名無しさん
2021/10/06(水) 22:53:20.88ID:OG+j1FAK371デフォルトの名無しさん
2021/10/09(土) 07:12:25.69ID:JFpyaThm ロベールC++入門の代入演算子についてなのですが
コピーコンストラクタのときは動的配列をdelete[]しなかったのに
なぜ代入演算子を使うときだけdelete[]するのか分からないので教えて下さい
本にはm_arrayには前に確保したメモリが存在するためdelete[]しないとメモリリーク
と書いてあるのですがコピーコンストラクタも同じじゃないの?と混乱してます
100行目です
https://ideone.com/xL8UOn
コピーコンストラクタのときは動的配列をdelete[]しなかったのに
なぜ代入演算子を使うときだけdelete[]するのか分からないので教えて下さい
本にはm_arrayには前に確保したメモリが存在するためdelete[]しないとメモリリーク
と書いてあるのですがコピーコンストラクタも同じじゃないの?と混乱してます
100行目です
https://ideone.com/xL8UOn
372デフォルトの名無しさん
2021/10/09(土) 10:44:46.48ID:tDH5FAwQ newしたメモリが不要になったらdeleteする
これだけ
コピーコンストラクタでのdelete、
いつnewしたデータに対して?
これだけ
コピーコンストラクタでのdelete、
いつnewしたデータに対して?
373デフォルトの名無しさん
2021/10/09(土) 17:51:02.84ID:QAOoCtV/374はちみつ餃子 ◆8X2XSCHEME
2021/10/09(土) 18:03:01.95ID:Z56nk6n1375デフォルトの名無しさん
2021/10/09(土) 18:04:17.21ID:jELfb/xT >>371
代入演算子は既にあるオブジェクトを別のオブジェクトで上書きする操作
コピーコンストラクタは別のオブジェクトから新しいオブジェクトを作って初期化する操作
代入演算子でdelete[]しているのは既にあるオブジェクト(*this)のメンバとして確保済みのメモリ領域
コピーコンストラクタの実行時には「既にあるオブジェクト」にあたるものは無いので、deleteするものも無い
代入演算子は既にあるオブジェクトを別のオブジェクトで上書きする操作
コピーコンストラクタは別のオブジェクトから新しいオブジェクトを作って初期化する操作
代入演算子でdelete[]しているのは既にあるオブジェクト(*this)のメンバとして確保済みのメモリ領域
コピーコンストラクタの実行時には「既にあるオブジェクト」にあたるものは無いので、deleteするものも無い
376デフォルトの名無しさん
2021/10/09(土) 20:35:07.35ID:QAOoCtV/377デフォルトの名無しさん
2021/10/10(日) 20:55:50.73ID:6QW0WSDe AtCoderの初心者向けのC++の説明のページを読んでいます。
vector<int> a(10);
aの第i番目の要素にアクセスする場合、a[i]よりもa.at(i)と書くほうが良いと書いてあります。
これは現在のC++で推奨されている書き方でしょうか?それとも単に初心者はそう書いたほうがいいというだけのことでしょうか?
vector<int> a(10);
aの第i番目の要素にアクセスする場合、a[i]よりもa.at(i)と書くほうが良いと書いてあります。
これは現在のC++で推奨されている書き方でしょうか?それとも単に初心者はそう書いたほうがいいというだけのことでしょうか?
378ハノン ◆QZaw55cn4c
2021/10/10(日) 21:05:41.56ID:KKHdhYPj379デフォルトの名無しさん
2021/10/10(日) 21:07:18.12ID:6QW0WSDe380デフォルトの名無しさん
2021/10/10(日) 21:08:35.36ID:6QW0WSDe 初心者でないプログラマーでatを使って書いている人は少数派ではないのですか?
381デフォルトの名無しさん
2021/10/10(日) 21:31:47.25ID:zWyM5YPA 範囲外にアクセスする可能性があるならat、ちゃんと事前にチェックするなら[]でいいんじゃない?
382デフォルトの名無しさん
2021/10/10(日) 22:58:42.68ID:gnqjARRQ 気分によるけどatが好きです
383デフォルトの名無しさん
2021/10/10(日) 23:07:44.84ID:gmqGyDAJ vector配列を指すポインタを使ってる時に[i]で指定する書き方がよく分からないのでat(i)使ってる
384デフォルトの名無しさん
2021/10/10(日) 23:14:51.45ID:U88jNIFg (*ポインタ)[i]
385はちみつ餃子 ◆8X2XSCHEME
2021/10/10(日) 23:15:56.24ID:cCUvKLuJ >>377
これのことだね。
https://atcoder.jp/contests/apg4b/tasks/APG4b_n
例外処理やアサートの説明を省略しているせいでどう使い分けるべきものなのかがよくわからん説明になってる。
C++ はかなり複雑で、 AtCoder のサイトにある雑な説明だけでは細かいところまで理解はできないよ。
C++ の言語仕様の詳細を理解するのに手間取って競技を始められないくらいならそういう風に割り切れという意味で
AtCoder としては at を推してるんであって、言語仕様やプログラマの習慣としてどちらかを推奨してたりはしない。
それぞれに用途がある。
これのことだね。
https://atcoder.jp/contests/apg4b/tasks/APG4b_n
例外処理やアサートの説明を省略しているせいでどう使い分けるべきものなのかがよくわからん説明になってる。
C++ はかなり複雑で、 AtCoder のサイトにある雑な説明だけでは細かいところまで理解はできないよ。
C++ の言語仕様の詳細を理解するのに手間取って競技を始められないくらいならそういう風に割り切れという意味で
AtCoder としては at を推してるんであって、言語仕様やプログラマの習慣としてどちらかを推奨してたりはしない。
それぞれに用途がある。
386はちみつ餃子 ◆8X2XSCHEME
2021/10/11(月) 00:50:58.08ID:kxIK5/L+ 余談だが C++ の言語仕様としては推奨というのはないが非推奨というのはあって
(結果的に同等のよりよい機能を推奨するのと同じことになっている場合はある)
将来の言語仕様の更新で廃止するつもりがあるということを意味する。
(結果的に同等のよりよい機能を推奨するのと同じことになっている場合はある)
将来の言語仕様の更新で廃止するつもりがあるということを意味する。
387デフォルトの名無しさん
2021/10/11(月) 02:00:14.70ID:xizp5ONl ポインタ->operator[](i)
388デフォルトの名無しさん
2021/10/13(水) 01:04:04.91ID:gvBCET4D Notepad++でcppファイルを選んで実行をすると
Visualstudioが立ち上がるのですが
どうすればNotepadで実行出来るのでしょうか?
Visualstudioが立ち上がるのですが
どうすればNotepadで実行出来るのでしょうか?
389ハノン ◆QZaw55cn4c
2021/10/13(水) 02:24:33.63ID:YMzdF2UZ390デフォルトの名無しさん
2021/10/13(水) 03:03:01.45ID:gvBCET4D >>389
回答ありがとうございます。
ファイルの関連付けをメモ帳とVisualstudioしか選べなかったです。(後Microsoftストア)
Notepad++は初期設定結構大変な感じなんでしょうか?
https://imgur.com/a/V3jOiV0
回答ありがとうございます。
ファイルの関連付けをメモ帳とVisualstudioしか選べなかったです。(後Microsoftストア)
Notepad++は初期設定結構大変な感じなんでしょうか?
https://imgur.com/a/V3jOiV0
391ハノン ◆QZaw55cn4c
2021/10/13(水) 19:41:40.64ID:YMzdF2UZ >>390
たしかに「設定→アプリ→既定のアプリ→ファイルの種類ごとに」
はうまくいかないですね
では、
開きたい拡張子を持ったファイルを右クリック→プログラムから開く→別のプログラムを開く→その他のアプリ→このPCで別のアプリを探す
ではどうですか?
私は win7 メインで、うまいアドバイスができなくてすみません‥‥
たしかに「設定→アプリ→既定のアプリ→ファイルの種類ごとに」
はうまくいかないですね
では、
開きたい拡張子を持ったファイルを右クリック→プログラムから開く→別のプログラムを開く→その他のアプリ→このPCで別のアプリを探す
ではどうですか?
私は win7 メインで、うまいアドバイスができなくてすみません‥‥
392デフォルトの名無しさん
2021/10/19(火) 08:20:19.87ID:7/3R28mC C++でアプリを作る場合って、QTってやつかMFCって奴を勉強すればいいのでしょうか?
C++でWIN32APIを学ぶっていうのはないですか?
C++でWIN32APIを学ぶっていうのはないですか?
393デフォルトの名無しさん
2021/10/19(火) 10:04:52.66ID:emsejTNf ないです
394デフォルトの名無しさん
2021/10/19(火) 10:18:17.44ID:vPA5f3eX あります
395デフォルトの名無しさん
2021/10/19(火) 11:51:03.31ID:90qj1F6l メッセージループによるイベントドリブン型アプリケーション
「ウインドウ」と「メッセージ」というウインドウズの基本概念ぐらいは理解してもいい
「ウインドウ」と「メッセージ」というウインドウズの基本概念ぐらいは理解してもいい
396デフォルトの名無しさん
2021/10/19(火) 19:00:27.41ID:C9DkQou5 tcl/tk
wxWidgets
DXLib
Unity
wxWidgets
DXLib
Unity
397ハノン ◆QZaw55cn4c
2021/10/19(火) 20:20:27.92ID:KyySFZDA >>392
「C++でwin32api」ですか…
そういうのは c で win32api を理解した後、各自が独力で工夫して c++ と win32api とを辻褄あわせするものだと思っていましたが、それはそうと、そういう書籍は過去にありました
たしか leaf というライブラリと WOOL という lisp 処理系が掲載されていた記憶があります
「C++でwin32api」ですか…
そういうのは c で win32api を理解した後、各自が独力で工夫して c++ と win32api とを辻褄あわせするものだと思っていましたが、それはそうと、そういう書籍は過去にありました
たしか leaf というライブラリと WOOL という lisp 処理系が掲載されていた記憶があります
398デフォルトの名無しさん
2021/10/19(火) 22:23:42.02ID:P+gkhAFH MFC は何十年も前だけど、今もあるの?
QT は、Linux で聞くけど、Windows で使うの?
QT は、Linux で聞くけど、Windows で使うの?
399デフォルトの名無しさん
2021/10/20(水) 02:20:42.50ID:+2OzLQ7p >>398
Qt5Core.dllで検索する色々出てくるから、win/macとマルチのアプリなんかで割と使われてみたいね。
手元だとfusion360とかresolveとかで使われてるっぽい。商用ライセンスあるからかな?
Qt5Core.dllで検索する色々出てくるから、win/macとマルチのアプリなんかで割と使われてみたいね。
手元だとfusion360とかresolveとかで使われてるっぽい。商用ライセンスあるからかな?
400デフォルトの名無しさん
2021/10/20(水) 11:06:18.19ID:OEiI06HQ 5以前は良かったんだがな
401はちみつ餃子 ◆8X2XSCHEME
2021/10/20(水) 13:35:36.40ID:dLyN/sz8402デフォルトの名無しさん
2021/10/20(水) 18:01:15.01ID:oZqSjSwG403デフォルトの名無しさん
2021/10/20(水) 19:03:46.64ID:CkfuGqw9 知っておいた方が良いけど
避ける方法もある
避ける方法もある
404デフォルトの名無しさん
2021/10/20(水) 19:36:43.86ID:+2OzLQ7p406デフォルトの名無しさん
2021/10/20(水) 23:17:39.77ID:vkb7a42p >>405
C++でも出来るよう
C++でも出来るよう
407はちみつ餃子 ◆8X2XSCHEME
2021/10/21(木) 00:38:03.74ID:JAunV20A >>405
WinRT は Windows のモダンな API セットで、特定の言語に結びついたものではない。
WinRT は Windows のモダンな API セットで、特定の言語に結びついたものではない。
408デフォルトの名無しさん
2021/11/05(金) 12:47:56.16ID:dj6lZ6W1 無名クラスのメンバ関数の実装を宣言と別にすることって可能ですか
struct {
int func_hoge(int n);
} myClass;
(実装)?
struct {
int func_hoge(int n);
} myClass;
(実装)?
409デフォルトの名無しさん
2021/11/07(日) 08:51:29.08ID:+fO8/EKc std::vecotrのインスタンスを作ったとき、指定した要素数以上のメモリを確保しないようにはできますか??
410デフォルトの名無しさん
2021/11/07(日) 11:43:59.55ID:cdTTDz5e 実装依存
普通は出来ない
普通は出来ない
411デフォルトの名無しさん
2021/11/09(火) 14:46:05.51ID:t/ZCl1K7 普通でなく指定したバイト数以上のメモリを確保しようとしたら例外が上がる実装例
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
#define MAX_SIZE 100
template <class T, class Alloc=allocator<T>>
class SizeLimitedAllocator {
public:
typedef T value_type;
T *allocate(size_t n) {
if (n > MAX_SIZE) throw bad_alloc();
return allocator_traits<Alloc>::allocate(allocator_, n);
}
void deallocate(T *p, size_t n) {
allocator_traits<Alloc>::deallocate(allocator_, p, n);
}
private:
Alloc allocator_;
};
int main()
{
vector<char,SizeLimitedAllocator<char>> vec(MAX_SIZE);
try { vec.resize(MAX_SIZE+1); }
catch (bad_alloc& e) { cerr << e.what() << endl; }
return 0;
}
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
#define MAX_SIZE 100
template <class T, class Alloc=allocator<T>>
class SizeLimitedAllocator {
public:
typedef T value_type;
T *allocate(size_t n) {
if (n > MAX_SIZE) throw bad_alloc();
return allocator_traits<Alloc>::allocate(allocator_, n);
}
void deallocate(T *p, size_t n) {
allocator_traits<Alloc>::deallocate(allocator_, p, n);
}
private:
Alloc allocator_;
};
int main()
{
vector<char,SizeLimitedAllocator<char>> vec(MAX_SIZE);
try { vec.resize(MAX_SIZE+1); }
catch (bad_alloc& e) { cerr << e.what() << endl; }
return 0;
}
412デフォルトの名無しさん
2021/11/25(木) 04:15:10.15ID:0166A/na void *q = (void*)p;
void *r = reinterpert_cast<void *>(p);
void *s = static_cast<void *>(p);
どっちが良い?
void *r = reinterpert_cast<void *>(p);
void *s = static_cast<void *>(p);
どっちが良い?
413はちみつ餃子 ◆8X2XSCHEME
2021/11/25(木) 04:51:08.49ID:Mn8CZmYm >>412
static_cast で可能なものなら static_cast を使うのが行儀が良い。
Cスタイルのキャスト記法は適用範囲が広すぎて意図通りではない (危険な) 変換でもコンパイルが通るかもしれんということで
複数のキャストを用意しているので意図にあてまる限りなるべく狭い効果を持つキャストを用いるべき。
static_cast で可能なものなら static_cast を使うのが行儀が良い。
Cスタイルのキャスト記法は適用範囲が広すぎて意図通りではない (危険な) 変換でもコンパイルが通るかもしれんということで
複数のキャストを用意しているので意図にあてまる限りなるべく狭い効果を持つキャストを用いるべき。
414デフォルトの名無しさん
2022/02/10(木) 15:34:30.67ID:Ido/99Jv githubからcshogiというパッケージをインストールしようとしたところ
ビルド中に
src/mate.cpp:110:26: error: template parameter redefines default argument
というエラーが発生しました。
実行コマンドは
CPPFLAGS=-std=c++17 pip install git+https://github.com/TadaoYamaoka/cshogi
としているのですが、あれこれ調べてもう打つ手がなくなりそうです。なにが悪いでしょうか。
macOS12.2付属のclangでビルドしています。(他の人は使っているので、文法などは問題ないはずだと思っています。)
ビルド中に
src/mate.cpp:110:26: error: template parameter redefines default argument
というエラーが発生しました。
実行コマンドは
CPPFLAGS=-std=c++17 pip install git+https://github.com/TadaoYamaoka/cshogi
としているのですが、あれこれ調べてもう打つ手がなくなりそうです。なにが悪いでしょうか。
macOS12.2付属のclangでビルドしています。(他の人は使っているので、文法などは問題ないはずだと思っています。)
415デフォルトの名無しさん
2022/02/10(木) 15:42:07.23ID:J5PrGMnU そのエラーメッセージで検索すれば?
416デフォルトの名無しさん
2022/02/10(木) 15:46:35.62ID:Ido/99Jv >>415
とっくにやってますわ!と言うところでしたが、stackoverflowでぴったりなのがありました。
https://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument
gccならよさそうですね。
とっくにやってますわ!と言うところでしたが、stackoverflowでぴったりなのがありました。
https://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument
gccならよさそうですね。
417デフォルトの名無しさん
2022/03/15(火) 20:43:42.96ID:+mlS0n0o test
418デフォルトの名無しさん
2022/03/15(火) 21:05:11.63ID:q9dCXwxq Borland C++Builder 1が無料ダウンロードできるようですが
Borland C++ Compiler 5.5 freeとは全く別物でしょうか?
Borland C++ Compiler 5.5 freeとは全く別物でしょうか?
419デフォルトの名無しさん
2022/03/17(木) 11:44:12.82ID:Y2OAtTnf 1は大昔のを記念に無料DL可にしたやつじゃないかな
最新のやつもCommunity Editionていう無料版があるから、開発に使うならそっち
あとBuilderはVisual Studioのような統合開発環境でコンパイラも含まれる
最新のやつもCommunity Editionていう無料版があるから、開発に使うならそっち
あとBuilderはVisual Studioのような統合開発環境でコンパイラも含まれる
420デフォルトの名無しさん
2022/03/18(金) 12:32:15.10ID:Fw15ZxLZ ロベール読んでるけど、途中からコードとファイルを端折りすぎてどこに書いてるのか理解出来ない
421デフォルトの名無しさん
2022/03/19(土) 14:31:38.38ID:T81w77OE >>420
その本(サイト?)はあまり読んでないからわからないけど、こういう知識・技術系は複数の本やサイトを利用したほうがいいかも
基本はそのロベールで、曖昧な部分は他のテキストでみたいに
まあ逆でもいいけど
その本(サイト?)はあまり読んでないからわからないけど、こういう知識・技術系は複数の本やサイトを利用したほうがいいかも
基本はそのロベールで、曖昧な部分は他のテキストでみたいに
まあ逆でもいいけど
422デフォルトの名無しさん
2022/03/21(月) 11:12:55.05ID:Prmlj1K5 分割コンパイルの仕組みちゃんと理解しないまま雰囲気でヘッダインクルードしてるんですけど
cppファイルに#pragma once書かないのってどうしてですか??
cppファイルに#pragma once書かないのってどうしてですか??
423デフォルトの名無しさん
2022/03/21(月) 11:22:20.21ID:S8aTENmp >>422 書いても意味ないから。
424デフォルトの名無しさん
2022/03/21(月) 11:45:05.99ID:TlR/Mg8q425デフォルトの名無しさん
2022/04/07(木) 19:54:53.05ID:ozPVuLqH cppってインクルード出来たんだ
ヘッダーだけかと思った
ヘッダーだけかと思った
426デフォルトの名無しさん
2022/04/11(月) 15:54:11.00ID:LBY7PFnU 単にコピペしてくるだけだけだからなんでもいいぞ
ルックアップテーブル計算してテキストにダンプし、ソース中に#include "table.txt" で取り込むのを見たことがある
ルックアップテーブル計算してテキストにダンプし、ソース中に#include "table.txt" で取り込むのを見たことがある
427デフォルトの名無しさん
2022/04/11(月) 19:50:08.66ID:uaVZR/I2 IDEだと、プロジェクトに.cppを含めるとコンパイル対象になるので.inlとかにしておくのが無難
428デフォルトの名無しさん
2022/04/30(土) 07:28:15.03ID:2aZ7UOTr 前は中身がcppっぽいのはcppにしてたけど
インクルード前提のファイルはhにするようにした
#define ほにゃらら
#include ファイル名.h
##undef ほにゃらら
インクルードしても単体ソースとしても使えるヤツはcpp
ツールが吐き出したコードやデータでそのままincludeして使えるものは拡張子はそのまま
インクルード前提のファイルはhにするようにした
#define ほにゃらら
#include ファイル名.h
##undef ほにゃらら
インクルードしても単体ソースとしても使えるヤツはcpp
ツールが吐き出したコードやデータでそのままincludeして使えるものは拡張子はそのまま
429デフォルトの名無しさん
2022/06/11(土) 20:56:47.72ID:zBk/MBZO hpp
430デフォルトの名無しさん
2022/06/11(土) 21:01:36.29ID:N4H8T0pQ h と hpp どっちにするかの話じゃなくて
(h or hpp) にするか
(c or cpp) にするか
の話
(h or hpp) にするか
(c or cpp) にするか
の話
431デフォルトの名無しさん
2022/06/11(土) 21:02:37.04ID:N4H8T0pQ 初心者はトリッキーな使い方はしない方が良いから聞かなかった事にして
432デフォルトの名無しさん
2022/06/11(土) 21:20:49.53ID:kM12Kkyp トリッカーズ。
433デフォルトの名無しさん
2022/06/12(日) 10:33:13.76ID:cPTHwR7Q 三角形の秘密はね
434デフォルトの名無しさん
2022/06/12(日) 11:16:51.08ID:v0rlTKHd おなかがすいたら
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
