エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
探検
【初心者歓迎】C/C++室 Ver.106【環境依存OK】
レス数が900を超えています。1000を超えると表示できなくなるよ。
2020/07/13(月) 13:51:48.09ID:WBkWHxcT
848デフォルトの名無しさん
2021/08/30(月) 14:54:09.69ID:a7szkEqk C++17は甘え
849デフォルトの名無しさん
2021/08/30(月) 20:54:03.52ID:i7moqIxZ 甘えてもいいぜ
850デフォルトの名無しさん
2021/09/08(水) 21:07:44.76ID:QZMwNs5W C99で良いです……
851デフォルトの名無しさん
2021/11/24(水) 18:53:15.36ID:ONXwk6fD 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);
どっちが良い?
852デフォルトの名無しさん
2021/11/24(水) 22:24:01.60ID:7YsOMgZx p の型によるんじゃね?
853デフォルトの名無しさん
2021/11/25(木) 14:45:18.21ID:Ts2h3uwp >>838
Eigen の MatrixXtype と Matrix<type, Dynamic, Dynamic> が便利なのは判ったが
自分でそいつらを引数に持つテンプレート関数書こうとして
template <typename T, int R, int C>
void func(Matrix<T, R, C>&m){ ... }
で定義したら
a が Matrix3d a; とか RC 固定されてるときは func(a) で問題無いが
a が Matrix<type, Dynamic, Dynamic> a(3, 3); だと
実際に func(a) とかで呼ばれるときに
Matrix<type, -1, -1>
で呼ばれてて Row 数も Column 数も判らないので
結局呼ぶときに
func<type, 3, 3>(a)
みたいに確定して呼ぶことになるんだが
そういうもの?
Eigen の MatrixXtype と Matrix<type, Dynamic, Dynamic> が便利なのは判ったが
自分でそいつらを引数に持つテンプレート関数書こうとして
template <typename T, int R, int C>
void func(Matrix<T, R, C>&m){ ... }
で定義したら
a が Matrix3d a; とか RC 固定されてるときは func(a) で問題無いが
a が Matrix<type, Dynamic, Dynamic> a(3, 3); だと
実際に func(a) とかで呼ばれるときに
Matrix<type, -1, -1>
で呼ばれてて Row 数も Column 数も判らないので
結局呼ぶときに
func<type, 3, 3>(a)
みたいに確定して呼ぶことになるんだが
そういうもの?
854デフォルトの名無しさん
2021/11/26(金) 19:09:15.51ID:ZkEvf+9l Eigen使ったことないけど、それ多分動的なサイズ指定だよね
コンパイル時にサイズ分かってない奴じゃね
コンパイル時にサイズ分かってない奴じゃね
855デフォルトの名無しさん
2021/11/27(土) 15:14:48.94ID:dxTMcmeT fstream で open するオプションで
ios:in ios:out ios:binary とかと
ios_base:in ios_base:out ios_base:binary とかと
何が違うのでしょう?
ios:in ios:out ios:binary とかと
ios_base:in ios_base:out ios_base:binary とかと
何が違うのでしょう?
856デフォルトの名無しさん
2021/11/29(月) 16:58:44.62ID:Afxc3rI9 おなじ
:: だろうけど
:: だろうけど
857デフォルトの名無しさん
2021/12/06(月) 10:19:18.78ID:aQJDsz9k 一般的にプリプロセッサのビットシフトに制限てありますか?
#define HOGE (1<<27)
だとダメで
#define HOGE (0x8000000)
だとOKだとかありますかね?
#define HOGE (1<<27)
だとダメで
#define HOGE (0x8000000)
だとOKだとかありますかね?
858デフォルトの名無しさん
2021/12/06(月) 10:50:06.54ID:7ju/18KI >>857
プリプロセッサはその define値をその記述通りの文字列(というか文)としか見てなくて、単にその定義名の所へはめ込むだけじゃない?
あとは嵌め込まれた後の文脈でコンパイラが解釈するんじゃないかな。
プリプロセッサはその define値をその記述通りの文字列(というか文)としか見てなくて、単にその定義名の所へはめ込むだけじゃない?
あとは嵌め込まれた後の文脈でコンパイラが解釈するんじゃないかな。
859デフォルトの名無しさん
2021/12/06(月) 12:49:27.90ID:T2nrofKv860はちみつ餃子 ◆8X2XSCHEME
2021/12/06(月) 13:31:07.92ID:Fu08U5Ef >>857
定義での制限はないが、マクロの制御定数式として表れる場合、
つまり
#if HOGE > 0
みたいな前処理指令があった場合に全ての符号付整数型が intmax_t 、
全ての符号無し整数型が uintmax_t と同じ表現を持つというルールがあるので
通常の式とは解釈が違う。
(大抵の場合に intmax_t は long long int と同じ大きさだと思う。)
つまり普通の式としてならオーバーフローする場合でもプリプロセッサではオーバーフローしないこともあるので、
制限としてはむしろ緩い。
https://wandbox.org/permlink/Ns4Qt2xG3wj1WVBH
定義での制限はないが、マクロの制御定数式として表れる場合、
つまり
#if HOGE > 0
みたいな前処理指令があった場合に全ての符号付整数型が intmax_t 、
全ての符号無し整数型が uintmax_t と同じ表現を持つというルールがあるので
通常の式とは解釈が違う。
(大抵の場合に intmax_t は long long int と同じ大きさだと思う。)
つまり普通の式としてならオーバーフローする場合でもプリプロセッサではオーバーフローしないこともあるので、
制限としてはむしろ緩い。
https://wandbox.org/permlink/Ns4Qt2xG3wj1WVBH
861デフォルトの名無しさん
2021/12/08(水) 17:56:15.71ID:ouf8qdPn std::listのsortを使ってるのですが
同値だった場合の順序が維持されず困ってます。
何かよい手はないですか?
比較関数を渡してるのですがその中で何とかならないでしょうか?
同値だった場合の順序が維持されず困ってます。
何かよい手はないですか?
比較関数を渡してるのですがその中で何とかならないでしょうか?
862はちみつ餃子 ◆8X2XSCHEME
2021/12/08(水) 18:22:21.80ID:cTje1973863デフォルトの名無しさん
2021/12/08(水) 18:28:56.67ID:ouf8qdPn864デフォルトの名無しさん
2021/12/09(木) 05:48:07.42ID:4Thv0Igk 純粋仮想関数の通知メソッドの中から他所のアドレスを知りたい時C++だとどう書くのが一般的ですか?
865デフォルトの名無しさん
2021/12/09(木) 07:40:39.36ID:bGgqEdHH 日本語でおけ
866デフォルトの名無しさん
2021/12/14(火) 05:24:10.27ID:pHnakqcn 私の同僚のプログラマがC++で、あるソフトのプラグインをdll形式で作成しており
そのdllファイルは6割くらいの環境では問題なく動作しています。
しかし、ユーザーの環境次第で動かないことがあり
dllをインストールした状態でソフトウェアを起動しようとすると、ソフトウェア自体が起動しないというバグを抱えており
この問題の解決方法は数か月以上、見つかっていません。
そのdllはWindowsのみで動作するものであり、MacやLinuxには対応していません。
Windowsの何らかの設定に関係するバグなのでしょうか…?
バグの原因が一切分からず、彼の作業が進まないので私の作業も進まず、困っています。
私自身はC++でそのソフトのプラグインを作成したこともないですし、彼に何のアドバイスもできないので
このスレッドのお力をお借りしたいです。
dllを作成する際にユーザー環境でデバッグしてログを取得する方法など
何でも良いのでアドバイスがあったら教えてください。
エスパーを求めています。
そのdllファイルは6割くらいの環境では問題なく動作しています。
しかし、ユーザーの環境次第で動かないことがあり
dllをインストールした状態でソフトウェアを起動しようとすると、ソフトウェア自体が起動しないというバグを抱えており
この問題の解決方法は数か月以上、見つかっていません。
そのdllはWindowsのみで動作するものであり、MacやLinuxには対応していません。
Windowsの何らかの設定に関係するバグなのでしょうか…?
バグの原因が一切分からず、彼の作業が進まないので私の作業も進まず、困っています。
私自身はC++でそのソフトのプラグインを作成したこともないですし、彼に何のアドバイスもできないので
このスレッドのお力をお借りしたいです。
dllを作成する際にユーザー環境でデバッグしてログを取得する方法など
何でも良いのでアドバイスがあったら教えてください。
エスパーを求めています。
867デフォルトの名無しさん
2021/12/14(火) 05:56:13.12ID:6fha5luI printfデバッグをファイルに書くとか
868デフォルトの名無しさん
2021/12/14(火) 06:41:07.66ID:9Wj0xfjq 64bitと32bitの違い・・・ではないか
それかintel/amdどちらかにしかない命令使ってるとか、何か依存する部分があるとか??
それかintel/amdどちらかにしかない命令使ってるとか、何か依存する部分があるとか??
869デフォルトの名無しさん
2021/12/14(火) 08:10:32.07ID:o0cf+I8x まずはエラーメッセージをだな
でもランタイムライブラリのオプションがMTじゃなくてMDになってると予想
でもランタイムライブラリのオプションがMTじゃなくてMDになってると予想
870デフォルトの名無しさん
2021/12/14(火) 08:23:33.51ID:T7uEaOwT871デフォルトの名無しさん
2021/12/14(火) 10:16:08.28ID:e0HER7LA872デフォルトの名無しさん
2021/12/14(火) 11:09:39.54ID:RuQEsKMi そのプラグイン dll が vcのランタイムを要求してて 実行環境にvcのランタイムが入っていない
プラグインdllの性質上 ソフトが自前で LoadLibary するが、そこで失敗する
この際何が主因なのかわからないまま
静的なリンクなら ○○が見つかりませんdialog がでてすぐわかる
プラグインdll を Dependency Walker なりで そのDLLが必要としてる DLL を確認してみたら?
プラグインdllの性質上 ソフトが自前で LoadLibary するが、そこで失敗する
この際何が主因なのかわからないまま
静的なリンクなら ○○が見つかりませんdialog がでてすぐわかる
プラグインdll を Dependency Walker なりで そのDLLが必要としてる DLL を確認してみたら?
873デフォルトの名無しさん
2021/12/14(火) 11:37:46.60ID:zJGtuVBB >>872
ソフトの仕様や実装次第だけど、プラグイン読み込みに失敗して起動しないアプリもちょっと手抜き過ぎだよね
ソフトの仕様や実装次第だけど、プラグイン読み込みに失敗して起動しないアプリもちょっと手抜き過ぎだよね
874デフォルトの名無しさん
2021/12/14(火) 11:41:07.01ID:RuQEsKMi >>873
わかったとしても、「モジュール <プラグイン>.dll が見つからない」 としか書きようがなくてややこしい
※ 本当に見当たらないのは <プラグイン>.dll がさらにロードしようとしてる MSVCR○○.dll とかだから
わかったとしても、「モジュール <プラグイン>.dll が見つからない」 としか書きようがなくてややこしい
※ 本当に見当たらないのは <プラグイン>.dll がさらにロードしようとしてる MSVCR○○.dll とかだから
875デフォルトの名無しさん
2021/12/14(火) 11:43:56.15ID:RuQEsKMi プラグインのロード失敗で 即exit するのも不親切かもね
876デフォルトの名無しさん
2021/12/18(土) 10:46:11.74ID:RFbyER+p グローバル変数かstatic変数使ってないか?
昔他所のモジュールと変数の書き換え合戦が起きて正常に動作しない事があった
昔他所のモジュールと変数の書き換え合戦が起きて正常に動作しない事があった
877デフォルトの名無しさん
2021/12/19(日) 15:15:53.34ID:bLFtEsOT878デフォルトの名無しさん
2021/12/19(日) 17:40:07.63ID:150MzqYw 拡張子dllでも独自の実装してるホストプログラムあるからなぁ…
それこそホストの開発者に聞くしかない
それこそホストの開発者に聞くしかない
879デフォルトの名無しさん
2021/12/19(日) 23:17:52.32ID:mIjShW6/ 自前でできることは
1) DllMain の DLL_PROCESS_ATTACH、 DLL_PROCESS_DETACH に
printf を仕込んで 最低限 load がなされてるかを確認
2) load されてるのなら
最初に呼ばれるであろうexportしてる関数にがんがん printf を仕込んで 何処で死んでるかを確認
1) DllMain の DLL_PROCESS_ATTACH、 DLL_PROCESS_DETACH に
printf を仕込んで 最低限 load がなされてるかを確認
2) load されてるのなら
最初に呼ばれるであろうexportしてる関数にがんがん printf を仕込んで 何処で死んでるかを確認
880デフォルトの名無しさん
2021/12/24(金) 03:18:25.98ID:pnvTuQZD 規格厨ほど仕事ができなくね
どうでもいいようなことにこだわってないで
さっさと仕事終わらせろよ
どうでもいいようなことにこだわってないで
さっさと仕事終わらせろよ
881デフォルトの名無しさん
2021/12/24(金) 10:00:30.81ID:YmgFPSRd またお前か
何年立ったらルール覚えられるんだよ
つかえねーな
何年立ったらルール覚えられるんだよ
つかえねーな
882デフォルトの名無しさん
2022/01/17(月) 19:13:47.29ID:Xn5FtFWo メンバ関数へのポインタで質問なのですが
class MyClass {
public:
void (MyClass::*p)();
void func();
};
int main() {
MyClass obj;
このようなクラスがあったとして
main関数でobjのメンバの関数ポインタpへfuncのアドレスを入れる書き方と
pを使ってfuncを呼ぶ書き方を教えて下さい
class MyClass {
public:
void (MyClass::*p)();
void func();
};
int main() {
MyClass obj;
このようなクラスがあったとして
main関数でobjのメンバの関数ポインタpへfuncのアドレスを入れる書き方と
pを使ってfuncを呼ぶ書き方を教えて下さい
883デフォルトの名無しさん
2022/01/17(月) 19:29:52.39ID:pwXKfNQA884デフォルトの名無しさん
2022/01/17(月) 20:40:50.75ID:iHDNpEw/ C++でオブジェクト指向を学びたいなと思ってるのですが、みなさんはどのように学びましたか?
既存のゲームの機能追加などをサークルでやっていて、C++自体には慣れてきて次のステップに進みたいと思いました.
既存のゲームの機能追加などをサークルでやっていて、C++自体には慣れてきて次のステップに進みたいと思いました.
885デフォルトの名無しさん
2022/01/17(月) 20:47:51.30ID:h5bglXe3 ただただ自分でクラス設計考えて実際に書いて、さらにそれをあちこちで使ってみるだけ
実際に書く、利用する、をサボると机上の空論しか語れない頭でっかちになる
実際に書く、利用する、をサボると机上の空論しか語れない頭でっかちになる
886デフォルトの名無しさん
2022/01/17(月) 20:50:24.57ID:Xn5FtFWo >>883
ありがとうございます
ありがとうございます
887デフォルトの名無しさん
2022/01/26(水) 21:23:31.72ID:HoA8G4VO 初心者です。
自作クラスをVector型に押し込めようとしたのですが、そこで発生したエラーの解決方法を2時間くらい調べたのですが分かりませんでした。
class myClass
{
myClass(int A){num = A;}
void show() {
cout << "" << "="<<num<<endl;}
~myClass(){}
int num;
};
int main() {
myClass a1(1), a2(2), a3(3), a4(4), a5(5);
vector<myClass> myClassList;
myClassList.push_back(a1);
//中略
//削除するオブジェのインデックス番号を記録
vector<int> delList;
for (int i = 0; i < myClassList.size(); ++i)
{
if (myClassList[i].num == 2 || myClassList[i].num == 4) {
cout << "i" << "=" << i << endl;
delList.push_back(i);
}
}
cout << "削除開始" << endl;
for (int i = 0; i < delList.size(); ++i)
{
std::erase(myClassList, delList[i]);//コイツでエラー
}
return 0;
}
二項演算子 '==': 'myClass' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。
自作クラスをVector型に押し込めようとしたのですが、そこで発生したエラーの解決方法を2時間くらい調べたのですが分かりませんでした。
class myClass
{
myClass(int A){num = A;}
void show() {
cout << "" << "="<<num<<endl;}
~myClass(){}
int num;
};
int main() {
myClass a1(1), a2(2), a3(3), a4(4), a5(5);
vector<myClass> myClassList;
myClassList.push_back(a1);
//中略
//削除するオブジェのインデックス番号を記録
vector<int> delList;
for (int i = 0; i < myClassList.size(); ++i)
{
if (myClassList[i].num == 2 || myClassList[i].num == 4) {
cout << "i" << "=" << i << endl;
delList.push_back(i);
}
}
cout << "削除開始" << endl;
for (int i = 0; i < delList.size(); ++i)
{
std::erase(myClassList, delList[i]);//コイツでエラー
}
return 0;
}
二項演算子 '==': 'myClass' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。
889デフォルトの名無しさん
2022/01/26(水) 22:43:54.69ID:HoA8G4VO >>888
オペレータに何を定義すれば良いか分かりません
オペレータに何を定義すれば良いか分かりません
890蟻人間 ◆T6xkBnTXz7B0
2022/01/26(水) 22:53:20.32ID:bGQQ0+uk >>889
eraseの仕様を見れば内部で要素を比較していることがわかる。
そこでmyClassとintの比較を定義する必要がある。
bool operator==(int n) const
{
return n == num;
}
eraseの仕様を見れば内部で要素を比較していることがわかる。
そこでmyClassとintの比較を定義する必要がある。
bool operator==(int n) const
{
return n == num;
}
891蟻人間 ◆T6xkBnTXz7B0
2022/01/26(水) 22:55:52.03ID:bGQQ0+uk あるいは
friend bool operator==(const myClass& my, int n)
{
return my.num == n;
}
friend bool operator==(const myClass& my, int n)
{
return my.num == n;
}
892デフォルトの名無しさん
2022/01/26(水) 23:02:17.85ID:HoA8G4VO 蟻人間さん、ご丁寧に教えてくださり、本当にありがとうございます。
無事問題が解決しました
無事問題が解決しました
893デフォルトの名無しさん
2022/01/27(木) 07:58:45.49ID:Fon8EKoL delListはインデックスだからvector::eraseではなかろーか
https://ideone.com/jnELhK
https://ideone.com/jnELhK
894デフォルトの名無しさん
2022/01/28(金) 15:24:34.96ID:HENDwGdD msvcのコンパイルが遅いのとメモリ大量に使うのとで大変辛いのですが、コンパイルだけ別の端末で出来たりしませんか?
896デフォルトの名無しさん
2022/01/28(金) 16:19:19.11ID:gre2uKRK VARIANT型をログ出力したいときはどうしたらよいでしょうか?
897はちみつ餃子 ◆8X2XSCHEME
2022/01/28(金) 16:23:28.54ID:hT9TavA0898デフォルトの名無しさん
2022/01/28(金) 16:59:31.61ID:gre2uKRK >>897
Comのです
Comのです
899はちみつ餃子 ◆8X2XSCHEME
2022/01/28(金) 17:44:30.90ID:hT9TavA0 何がわからないの?
基本的な数値型や配列以外の場合にどう文字列化すればいいかわからないってこと?
基本的な数値型や配列以外の場合にどう文字列化すればいいかわからないってこと?
900デフォルトの名無しさん
2022/01/28(金) 17:57:24.82ID:gre2uKRK VARIANT.ToString的なのないかな?的な
みんな自分で作ってるの?
みんな自分で作ってるの?
901はちみつ餃子 ◆8X2XSCHEME
2022/01/28(金) 23:10:21.87ID:hT9TavA0 >>900
VARIANT は基本的な型だけでなく COM のオブジェクト (を指すポインタ) を含むこともある。
COM におけるオブジェクトは「少なくとも IUnknown インターフェイスは実装されている」という保証 (規約) があるだけで、
それをどのように表示できるのかは汎用的には決めようがない。
基本的な型だけでも簡易的に文字列化するものがあるとちょっとしたデバッグ用途などでありがたいというのはわからんでもないけど。
VARIANT は基本的な型だけでなく COM のオブジェクト (を指すポインタ) を含むこともある。
COM におけるオブジェクトは「少なくとも IUnknown インターフェイスは実装されている」という保証 (規約) があるだけで、
それをどのように表示できるのかは汎用的には決めようがない。
基本的な型だけでも簡易的に文字列化するものがあるとちょっとしたデバッグ用途などでありがたいというのはわからんでもないけど。
902デフォルトの名無しさん
2022/01/28(金) 23:24:19.57ID:A8Zj7Ozq >>901
オブジェクトはそのポインタ値を表示とかよくある
オブジェクトはそのポインタ値を表示とかよくある
903はちみつ餃子 ◆8X2XSCHEME
2022/01/28(金) 23:39:29.92ID:hT9TavA0 ログ用途だとアドレスだけでは意味が薄そうに思うけど……
(実行のたびに値は変わるだろうし、検証に使えない。)
少なくとも整数などではないという区別が出来れば十分ということはあり得るかな。
タイプライブラリがちゃんと用意されているなら型名などが取得できる場合もあるので可能ならそういう情報も欲しいけど、
いずれにしても「文字列にする」という要求はユースケースが多用すぎて標準的な機能として決め打ちはしづらい。
(実行のたびに値は変わるだろうし、検証に使えない。)
少なくとも整数などではないという区別が出来れば十分ということはあり得るかな。
タイプライブラリがちゃんと用意されているなら型名などが取得できる場合もあるので可能ならそういう情報も欲しいけど、
いずれにしても「文字列にする」という要求はユースケースが多用すぎて標準的な機能として決め打ちはしづらい。
904デフォルトの名無しさん
2022/01/28(金) 23:47:34.07ID:Bry4gZCu905デフォルトの名無しさん
2022/01/29(土) 16:18:19.62ID:F6gMvu/h ガチガチの初心者です
#include<iostream>
double func(double x){
if (x>0) return x;
else return 0;
}
double dfunc(double x){
if (x>0) return 1;
else return 0;
}
int main(){
for (double x=-1.0; x<1; x+=0.1){
std::cout << std::scientific;
std::cout << x << ",";
std::cout << func(x) << ",";
std::cout << dfunc(x) << std::endl;
}
return 0;
}
を分割コンパイルするためにmain.cpp、func.cpp、func.fにソース分割したいのですがどのようにすればよいでしょうか
#include<iostream>
double func(double x){
if (x>0) return x;
else return 0;
}
double dfunc(double x){
if (x>0) return 1;
else return 0;
}
int main(){
for (double x=-1.0; x<1; x+=0.1){
std::cout << std::scientific;
std::cout << x << ",";
std::cout << func(x) << ",";
std::cout << dfunc(x) << std::endl;
}
return 0;
}
を分割コンパイルするためにmain.cpp、func.cpp、func.fにソース分割したいのですがどのようにすればよいでしょうか
906デフォルトの名無しさん
2022/01/29(土) 16:41:33.39ID:LNIGuTho >>905 その3つファイル作って切り貼りして保存すればいいんじゃね。
907デフォルトの名無しさん
2022/01/29(土) 16:44:31.98ID:F6gMvu/h >>906
すみません、書き方が悪かったです。分割の仕方?切り貼りして保存する3つのファイルの中身の書き方が知りたいです。
すみません、書き方が悪かったです。分割の仕方?切り貼りして保存する3つのファイルの中身の書き方が知りたいです。
908デフォルトの名無しさん
2022/01/29(土) 16:47:36.64ID:3ZSK4aSw909デフォルトの名無しさん
2022/01/29(土) 16:48:20.54ID:LNIGuTho >>907 自分でやった結果を見せてもらわないと何に困ってるのかわからない。
910デフォルトの名無しさん
2022/01/29(土) 17:08:03.21ID:fQ9LbNHB >>905
とりあえず func.f はやめとけ
とりあえず func.f はやめとけ
911デフォルトの名無しさん
2022/01/29(土) 17:27:29.71ID:54L0j00R ふぉーとらんらんらん
912デフォルトの名無しさん
2022/01/29(土) 17:27:47.66ID:CzloZbS7 >>905
どんな入門書にも書いてあるようなことを質問するのは嫌がられる。
学ぶ気がなく代わりにやらせようとしているように見えるので。
そんで関連する事柄が多いので質問が具体的でないと単純に情報量的にとてもここには書けない。
細々としたところで引っかかるのは当然あることだしそういうのは喜んで回答するから
何がわからずに引っかかってるのかもうちょっと具体的にして欲しい。
わからないことをまとめられないなら
とりあえず自分なりにやってみたらどうなったのか見せれば、
何がわかってないかこっちで推測できる可能性がある。
どんな入門書にも書いてあるようなことを質問するのは嫌がられる。
学ぶ気がなく代わりにやらせようとしているように見えるので。
そんで関連する事柄が多いので質問が具体的でないと単純に情報量的にとてもここには書けない。
細々としたところで引っかかるのは当然あることだしそういうのは喜んで回答するから
何がわからずに引っかかってるのかもうちょっと具体的にして欲しい。
わからないことをまとめられないなら
とりあえず自分なりにやってみたらどうなったのか見せれば、
何がわかってないかこっちで推測できる可能性がある。
913デフォルトの名無しさん
2022/02/02(水) 00:03:59.30ID:9peRckoc if (fp = fopen("file.txt", "W+"))
って書くと↓が出るんだけど?
warning: suggest parentheses around assignment used as truth value
って書くと↓が出るんだけど?
warning: suggest parentheses around assignment used as truth value
914デフォルトの名無しさん
2022/02/02(水) 00:50:39.94ID:5Jw8HjAD まあ気に食わないが括弧でくくってやってる
915蟻人間 ◆T6xkBnTXz7B0
2022/02/02(水) 00:57:41.77ID:gV8dH/Sr if文では、代入と比較の混乱が深刻で、警告を出さなければいけなかったと聞いてるが。
916デフォルトの名無しさん
2022/02/02(水) 08:17:16.11ID:BmWHIg0d 論理型を省略した代償は高くつきすぎたな。
917デフォルトの名無しさん
2022/02/02(水) 10:18:30.37ID:l1cc3wPX 0とヌルの違いも曖昧な部分があったな
918はちみつ餃子 ◆8X2XSCHEME
2022/02/02(水) 11:07:29.08ID:5i7w7V2o >>913
強めの警告オプションを付けてたら言語仕様上の問題がないものでも良くない作法に対しては警告が出ることはある。
a && b || c
とかいう式でも (人間が) 優先度を勘違いしやすいから括弧を付けることを勧められるし、
インデントの付け方がずれてる場合とかも警告は出る。
余計なお世話だと思うなら大抵はオプションで抑制できるよ。
強めの警告オプションを付けてたら言語仕様上の問題がないものでも良くない作法に対しては警告が出ることはある。
a && b || c
とかいう式でも (人間が) 優先度を勘違いしやすいから括弧を付けることを勧められるし、
インデントの付け方がずれてる場合とかも警告は出る。
余計なお世話だと思うなら大抵はオプションで抑制できるよ。
919デフォルトの名無しさん
2022/02/02(水) 16:52:47.21ID:Os1L/Ifx 括弧でくくっただけじゃ文句いわれたこともあるので二重否定しとく
if (!!(fp = fopen("file.txt", "W+")))
if (!!(fp = fopen("file.txt", "W+")))
920はちみつ餃子 ◆8X2XSCHEME
2022/02/02(水) 17:18:37.99ID:5i7w7V2o C++17 以降では if 文の括弧の中に初期化を書けるようになった。
初期化の内容と判断に使う式をセミコロンで区切って書ける。
if (fp = fopen("file.txt", "W+"); fp)
このとき変数の宣言を書いてもよく、
if (FILE* fp = fopen("file.txt", "W+"); fp)
というようにすると、この変数のスコープを if 文の内側だけに制限できるので便利。
便利だから C にも導入して欲しい。
初期化の内容と判断に使う式をセミコロンで区切って書ける。
if (fp = fopen("file.txt", "W+"); fp)
このとき変数の宣言を書いてもよく、
if (FILE* fp = fopen("file.txt", "W+"); fp)
というようにすると、この変数のスコープを if 文の内側だけに制限できるので便利。
便利だから C にも導入して欲しい。
921デフォルトの名無しさん
2022/02/02(水) 17:39:51.00ID:il4bRKm2 if括弧中で初期化なんて前からやってたことだし
今じゃ代入も初期化になったのか
今じゃ代入も初期化になったのか
922はちみつ餃子 ◆8X2XSCHEME
2022/02/02(水) 18:18:35.55ID:5i7w7V2o923デフォルトの名無しさん
2022/02/08(火) 08:24:13.76ID:vXrgdSa9 デストラクタだけ書いてあってムーブできないクラスをメンバ変数にすると色んな所でコンパイルエラーが出て困りました
値ではなくポインタで持つか、自分のクラスででムーブコンストラクタを書いたらとりあえずはエラーが出なくなったのですが、
こういうクラスは一体どう使われるのを想定して実装したんでしょうか?
値ではなくポインタで持つか、自分のクラスででムーブコンストラクタを書いたらとりあえずはエラーが出なくなったのですが、
こういうクラスは一体どう使われるのを想定して実装したんでしょうか?
924デフォルトの名無しさん
2022/02/08(火) 18:34:16.03ID:SQWxHGFm 基底クラスからたくさん派生クラスを作りました。
基底クラスの1つのvirtualメソッドを、各派生クラスでoverrideしました。
基底クラスを指す箱から、派生クラスのメソッドを呼ぶ方法を教えてください。
多少スタイルを変えても実現する方法があればお願いします。
ただし、場合分けやインデックスで対応するのは(派生クラスが増えたときに修正箇所が分散するので)厳しいです。
コンパイラは最近のvisual studioのC++を使っています。
struct Basic{
virtual void work(){cout<<"Basic";}
};
struct B1:public Basic{
void work()override{cout<<"B1";}
}b1;
struct B30:public Basic{
void work()override{cout<<"B30";}
}b30;
void main(){
Basic basic_array[9];
basic_array[0]=b30;
basic_array[0].work();//基底クラスのメソッドが呼ばれて Basic と表示されてしまう。
}
基底クラスの1つのvirtualメソッドを、各派生クラスでoverrideしました。
基底クラスを指す箱から、派生クラスのメソッドを呼ぶ方法を教えてください。
多少スタイルを変えても実現する方法があればお願いします。
ただし、場合分けやインデックスで対応するのは(派生クラスが増えたときに修正箇所が分散するので)厳しいです。
コンパイラは最近のvisual studioのC++を使っています。
struct Basic{
virtual void work(){cout<<"Basic";}
};
struct B1:public Basic{
void work()override{cout<<"B1";}
}b1;
struct B30:public Basic{
void work()override{cout<<"B30";}
}b30;
void main(){
Basic basic_array[9];
basic_array[0]=b30;
basic_array[0].work();//基底クラスのメソッドが呼ばれて Basic と表示されてしまう。
}
925デフォルトの名無しさん
2022/02/08(火) 19:25:55.42ID:WarIH046 Basicの配列にはBasicのオブジェクトしか入らないから、b30もコピーしたときにBasicになってしまったからだよ
Basic*の配列にするかvector<uniq_ptr<Basic>>を使えば
Basic*の配列にするかvector<uniq_ptr<Basic>>を使えば
926デフォルトの名無しさん
2022/02/08(火) 19:56:37.56ID:SQWxHGFm >>925
ポリモーフィズム成功しました。基底クラスのポインタを使って解決しました。
また、基底クラスの変数にコピーすると派生クラス独自のメンバが全て無くなることが理解できました。
ありがとうございました。
void main(){
Basic*basic_array[9];
basic_array[0]=&b30;
basic_array[0]->work();//B30のメソッドが呼ばれた。
}
ポリモーフィズム成功しました。基底クラスのポインタを使って解決しました。
また、基底クラスの変数にコピーすると派生クラス独自のメンバが全て無くなることが理解できました。
ありがとうございました。
void main(){
Basic*basic_array[9];
basic_array[0]=&b30;
basic_array[0]->work();//B30のメソッドが呼ばれた。
}
927デフォルトの名無しさん
2022/02/11(金) 14:30:39.44ID:/nAwqwYv928デフォルトの名無しさん
2022/02/18(金) 10:16:19.82ID:+V9f8lU9 例外で飛んじゃうと後始末ができなくてメモリリークしちゃうんだけど
クラスでラップしてデストラクタっていちいちやる感じ?
クラスでラップしてデストラクタっていちいちやる感じ?
929デフォルトの名無しさん
2022/02/18(金) 10:30:02.61ID:+V9f8lU9 try~catchで囲えば処理できるけど
すべての例外が出る可能性のあるコード全部try~catchしちゃっていい?
すべての例外が出る可能性のあるコード全部try~catchしちゃっていい?
930デフォルトの名無しさん
2022/02/18(金) 11:08:23.85ID:v7utSHD9932デフォルトの名無しさん
2022/02/18(金) 12:17:15.52ID:+V9f8lU9933デフォルトの名無しさん
2022/02/18(金) 12:21:15.24ID:mVeDXtSU なにいってんの
934デフォルトの名無しさん
2022/02/18(金) 12:27:42.18ID:+V9f8lU9 えー、わからんのー?
つまり例外が発生しうるとこすべてで
尻切れトンボされる可能性があって
以前のようにmalloc-freeのコードが混じってるとそいつらは問答無用でメモリリークしちゃうって話よ
つまり例外が発生しうるとこすべてで
尻切れトンボされる可能性があって
以前のようにmalloc-freeのコードが混じってるとそいつらは問答無用でメモリリークしちゃうって話よ
935デフォルトの名無しさん
2022/02/18(金) 12:47:42.19ID:YFQd7auv malloc/freeなら検出できるやん
936はちみつ餃子 ◆8X2XSCHEME
2022/02/18(金) 12:48:02.74ID:fowo2HBL937デフォルトの名無しさん
2022/02/18(金) 13:19:45.68ID:+V9f8lU9 まあ、それよ
そういう対応が必要になるって話よ
追加するやつ全部trycatchで包むか
mallocfreeをクラスで包むか
入れたのは20行程度なのにルーチンの流れまで変える必要があったりなかったりで(# ゚Д゚) イラッ!
そういう対応が必要になるって話よ
追加するやつ全部trycatchで包むか
mallocfreeをクラスで包むか
入れたのは20行程度なのにルーチンの流れまで変える必要があったりなかったりで(# ゚Д゚) イラッ!
938デフォルトの名無しさん
2022/02/18(金) 13:39:34.12ID:v7utSHD9 >>934
malloc-freeしてる既存コードに例外発生する処理を混ぜるなんて特殊状況ならしょうがない。
面倒な状況なのはわかる。あきらめて心を殺してtry catchするか小さいRAII用クラスを作るか。
あるいはmalloc-freeしてるところも標準コンテナやunique_ptrに置き換えていけばすっきりするかもね。
malloc-freeしてる既存コードに例外発生する処理を混ぜるなんて特殊状況ならしょうがない。
面倒な状況なのはわかる。あきらめて心を殺してtry catchするか小さいRAII用クラスを作るか。
あるいはmalloc-freeしてるところも標準コンテナやunique_ptrに置き換えていけばすっきりするかもね。
939デフォルトの名無しさん
2022/02/19(土) 09:00:24.16ID:AlOKsuc0 >>932
クソすぎかもしれないが、それは必要だし普通だろ
クソすぎかもしれないが、それは必要だし普通だろ
940デフォルトの名無しさん
2022/02/19(土) 10:43:55.59ID:MFjncly/ メモリ解放以外にデストラクタでやることはあるわけだしな
集約して定義しとけよという
集約して定義しとけよという
941デフォルトの名無しさん
2022/03/09(水) 22:51:16.35ID:wIy/pNxS LinuxでyyyyMMddhhmmss.fffを出力する
一番簡単な方法を教えて下さい
一番簡単な方法を教えて下さい
942デフォルトの名無しさん
2022/03/09(水) 23:05:24.02ID:w9Xuob20 printf("yyyyMMddhhmmss.fff");
943蟻人間 ◆T6xkBnTXz7B0
2022/03/09(水) 23:58:24.65ID:ptoc1SJJ GNU/Linuxを仮定
system("date +%Y%m%d%H%M%S.%3N\");
system("date +%Y%m%d%H%M%S.%3N\");
944デフォルトの名無しさん
2022/03/10(木) 00:03:44.70ID:IfzvyEOT 日付のフォーマットなんて都度調べるもんな
覚えてる変なやつもいるんだろうね
覚えてる変なやつもいるんだろうね
945蟻人間 ◆T6xkBnTXz7B0
2022/03/10(木) 00:11:23.45ID:3vn8A8hZ946デフォルトの名無しさん
2022/03/10(木) 07:16:50.83ID:ZtFzrJEF >>945
これやったら秒とミリ秒を別で取得してるので
秒が59.999(ミリ秒はイメージ)のときに
ミリ秒は00.002ってなるときに前回の値が59.857ぐらいだったとすると
59.002ってなってしまうので逆転が起きたときは前回の値と比較して
逆転してたらミリ秒を強制的に999にするとかダサイことやってるんですけど
マジでこんな方法しかないでしょうか?
これやったら秒とミリ秒を別で取得してるので
秒が59.999(ミリ秒はイメージ)のときに
ミリ秒は00.002ってなるときに前回の値が59.857ぐらいだったとすると
59.002ってなってしまうので逆転が起きたときは前回の値と比較して
逆転してたらミリ秒を強制的に999にするとかダサイことやってるんですけど
マジでこんな方法しかないでしょうか?
947デフォルトの名無しさん
2022/03/10(木) 07:48:07.93ID:E/Z/b8gJレス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★2 [♪♪♪★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- 今まで一度も選挙行ったことない俺(36)「政治に興味湧いた!」→ネットで高市首相関連動画やSNSの意見を見る
- 【高市悲報】大暴落 [115996789]
- 毎日鶏皮1キロ食ってるんやが
- お前らが常備してるクスリなんや
- 堀井雄二「ドラクエ1リメイクは時代に合わせず、あえて勇者ひとり旅にさせていただきました」←これ
- 16のヒッキー女に構って
