21/08/11 13:28:06.66 MU7UJMps.net
追伸
一つの fuga.cpp 内で
二か所以上で "C" が使用されていたとき
同じアドレスにしてくれる機能もあるみたいですが
fuga.cpp と hage.cpp みたいに別のソースで
それぞれ "C" を使ってたりすると
勝手に同じアドレスにしてくれたりはないみたいで
いろいろトラブルのもとになりそうです
(どっちみち変数になってると手も足も出ませんし)
key は std::string にしておくか
あるいは
std::hash<>
と
std::equal_to<>
を定義して自分で比較する方が安全な模様
825:デフォルトの名無しさん
21/08/11 13:42:41.83 EWMgwFeS.net
>>796
「あるいは」以降ってunordered_mapの話じゃないかい
mapならstd::less<>を定義する……というかデフォルトのstd::less<>が使われないようにユーザ定義比較関数をコンストラクタで渡す
俺もこういう場合はキーにstd::string使うからいいけども
826:デフォルトの名無しさん
21/08/11 14:06:43.19 MU7UJMps.net
今回の問題は
>一つの fuga.cpp 内で二か所以上で "C" が使用されていたとき同じアドレスにしてくれる機能もあるみたいですが
>fuga.cpp と hage.cpp みたいに別のソースでそれぞれ "C" を使ってたりすると勝手に同じアドレスにしてくれたりはないみたいで
これでした
stringにしたら解決です
ほんとうにありがとうございました
827:デフォルトの名無しさん
21/08/11 14:27:08.48 01hIEDa4.net
>>798 別のソースでも同じアドレスにしてくれることあるよ。
828:はちみつ餃子
21/08/11 14:56:20.07 QcAq7ivU.net
言語仕様上は内容が同じ文字列リテラルを統合するかどうかは処理系定義。
URLリンク(timsong-cpp.github.io)
829:デフォルトの名無しさん
21/08/12 23:28:31.22 sg4QisCT.net
>>ってどのように言えばいい?
だいなり、だいなり
???
830:はちみつ餃子
21/08/13 00:46:25.67 BE9FMbqU.net
>>801
トークンとしての名前は無いと思う。
演算子としての名前なら右シフト演算子とか、
iostream 的な用途の場合は抽出演算子とも言う。
831:デフォルトの名無しさん
21/08/13 15:49:32.03 ZZGdeLtF.net
insertion/extraction operatorっていうのか。
stream operatorだと思ってたわ
832:はちみつ餃子
21/08/13 16:31:09.36 BE9FMbqU.net
>>802-803
念のために仕様書を見直して見たら抽出子 (extractor) だったわ。
833:デフォルトの名無しさん
21/08/21 20:09:51.28 7GAoG1Iq.net
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しでView types参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
URLリンク(nim-lang.github.io)
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、Cのソースコードを吐き出せるのでC言語でリモートワークされ
ている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
834:デフォルトの名無しさん
21/08/22 10:20:28.75 0Cz6ueFz.net
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
URLリンク(nim-lang.github.io)
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
835:デフォルトの名無しさん
21/08/22 10:29:54.67 0Cz6ueFz.net
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
URLリンク(nim-lang.github.io)
第二プログラミング言語として Rust はオススメしません Nim をやるのです
URLリンク(wolfbash.hateblo.jp)
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
836:デフォルトの名無しさん
21/08/22 12:34:32.34 m1rLE8Mc.net
怠け者が一生懸命2回書き込んじゃうのか
837:デフォルトの名無しさん
21/08/22 13:21:27.56 cx6/dnxW.net
unordered_map で erase(key) を実行した場合
要素のデストラクタは呼ばれるのでしょうか?
必ず自分で呼ばないとだめ?
あるいは勝手に呼んでくれるオプションとかある?
838:デフォルトの名無しさん
21/08/22 13:38:27.67 m4vhMo04.net
呼ばれるよ。そうじゃないと危なすぎるでしょ。
839:デフォルトの名無しさん
21/08/22 13:51:18.62 cx6/dnxW.net
つまり
unordered_map<hoge, fuga *>
�
840:ンたいなときって fuga *f があるとすると delete f されるっていう認識で OK?
841:デフォルトの名無しさん
21/08/22 13:56:28.38 M38WAZ3o.net
ポインタ型のデストラクタは基本的に何もしない。
デストラクタで破棄したいならunique_ptrなどスマポを使う。
842:ハノン
21/08/22 15:55:44.42 .net
>>809
つ URLリンク(ideone.com)
843:ハノン
21/08/22 16:00:15.54 .net
>>811
つ URLリンク(ideone.com)
844:ハノン
21/08/22 18:24:32.36 .net
>>813
>>809
ユーザー定義のハッシュ関数を std 名前空間に押し込むのはお行儀が悪いよね…‥
URLリンク(ideone.com)
845:はちみつ餃子
21/08/22 21:31:04.10 YcQtKocs.net
>>815
文字列リテラルを char* にキャストするほうがだいぶん行儀が悪いと思うよ。
846:ハノン
21/08/22 22:10:22.39 .net
>>816
しかし、MyStr のコンストラクタの引数が std::string とか、もう何やっているのかわからなくなる‥‥
847:はちみつ餃子
21/08/22 22:21:02.88 YcQtKocs.net
>>817
???
const char* で受ければいいだけでしょ?
なんでそこで std::string が出てくるの?
848:ハノン
21/08/22 22:23:59.15 .net
>>818
そういう意味でしたか、const に対する注意力がまだ足りないのは私の課題ですね
849:デフォルトの名無しさん
21/08/23 11:12:35.74 PZenUrJ/.net
linuxのg++8.3でstd::stringのメンバ関数の
insert(const_iterator, char)を使うとコンパイルが通らないのですが、バグでしょうか?
-std=gnu++1zつけてます。
850:デフォルトの名無しさん
21/08/23 12:30:44.70 gvYYeNdp.net
>>820
具体的に問題を再現するコードとエラーメッセージを書いて。
851:デフォルトの名無しさん
21/08/23 14:00:01.42 BEPpIG+d.net
>>819
草生えたw
852:デフォルトの名無しさん
21/08/24 09:47:42.50 HAU1OEWW.net
>>821
こんな感じです。
g++のバージョンは8.3で-std=gnu++1z でコンパイルしています。
-- ソースファイル
#include <string>
int main(int argc, char** argv) {
std::string str="abcd";
std::string::const_iterator it = str.cend();
str.insert(it, 'a');
return 0;
}
-- エラーメッセージ
testinsert.cpp: In function ‘int main(int, char**)’:
testinsert.cpp:6:21: error: no matching function for call to ‘std::basic_string<char>::insert(std::basic_string<char>::const_iterator&, char)’
str.insert(it, 'a');
^
In file included from /opt/rh/devtoolset-8/root/usr/include/c++/8/string:52,
from testinsert.cpp:1:
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/basic_string.h:4419:7: note: candidate: ‘void std::basic_string<_CharT, _Traits, _Alloc>::insert(std::basic_string<_CharT, _Traits, _Alloc>::iterator, std::basic_string<_CharT, _Traits, _Alloc>::size_type, _CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; typename _Alloc::rebind<_CharT>::other::pointer = char*; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’
insert(iterator __p, size_type __n, _CharT __c)
^~~~~~
853:デフォルトの名無しさん
21/08/24 12:50:48.93 MkJE9y3A.net
>>823
コンパイルできないのはバグだが終端イテレータの扱いについては
変遷があって有効なイテレータと見做されない時期もあった。
最後に文字をくっつけるのであれば push_back か append を使ったほうが無難。
854:デフォルトの名無しさん
21/08/24 14:09:58.40 +43Lnt
855:iD.net
856:デフォルトの名無しさん
21/08/25 14:20:52.77 cqt8yWy6.net
>>824
アドバイスありがとうございます。
やっぱり規格的におかしいと思って調べてみたところコンパイラがc++11に対応していないだけでした。
ありがとうございました
857:デフォルトの名無しさん
21/08/25 15:38:43.16 9jFaPzYS.net
コンパイラはver.4.8で対応してるよ
gnu++1zてのがないんじゃないの?
858:デフォルトの名無しさん
21/08/25 17:29:41.65 +rMtuhpY.net
const_iteratorだとダメでiteratorだと通るぽい
↓のコード、手持ちのg++ (GCC) 7.3.1で-std=gnu++1zでコンパイル、実行できたが
URLリンク(cpprefjp.github.io)
「(6) 指定したイテレータが指す要素の前に、文字を挿入する」の
s.insert(s.begin(), 'b');
を
s.insert(s.cbegin(), 'b');
にするとコンパイルエラーになる
859:デフォルトの名無しさん
21/08/25 19:02:32.36 s4ke0ECA.net
C++を勉強しているんだけど難しすぎる。
目標は研究に使う数値計算ライブラリを作ることでそのために、
オブジェクト指向とテンプレートプログラミングとSTLを勉強しているんだけど量が多すぎて発狂しそう。
本当にC++を仕事で使っている人はこの量の仕様を覚えて使いこなしてるのか・・・
860:デフォルトの名無しさん
21/08/25 19:16:48.44 I0Do+yHA.net
基本的に自分がよく使う範囲だけ覚えて
必要があればそれ以外の範囲を調べて使う
膨大なようで、所詮言語だから使ってれば覚える
861:デフォルトの名無しさん
21/08/25 19:55:14.87 s4bO6YKI.net
生半可に上辺だけ触って判った気になって
コード描けますとかいうやつと仕事したくないわ
862:デフォルトの名無しさん
21/08/25 21:53:18.83 gHVAu5z0.net
>>827
>>828
言葉足らずですみません。
CentOS7のdevtoolのg++はABI互換性の関係から古いlibstdc++としかリンクできないようにされていて
つまるところC++11の機能はほとんど使えなくなっている、ということでした。
本来ver8.3ならC++17にも対応しているはずなのにほとんど意味ないわけです…。
だったら-std=c++11とかつけたときに警告してくれとでも思わないわけもないですが。
863:デフォルトの名無しさん
21/08/25 23:11:46.20 3/bOIe3o.net
>>829
もしEigenとかみたいなメタプログラミング使った数値計算ライブラリを考えてるならやめとけ
無駄に開発期間が数倍から10倍程度に膨れ上がるだけ
とりあえずテンプレートとか使わずに(あるいはメタじゃないレベルにおさえて)普通に書いたら?
864:デフォルトの名無しさん
21/08/26 06:13:02.19 H9rsGF96.net
>>829
仕事をすると言っても、他の人がこさえたライブラリを使う場合はそこまでは求められんだろう。
反対に根っこ部分のライブラリとか、チーム内でのルールに関わると知識と経験がいるんじゃないかな?
よく理解できている方法でしっかり組み立てられるようになってから、徐々に細かい話に手を出したらいいと思う。
他の方法は解ってるし悪いわけでもないが、記述が気に入らないので延々とtemplate弄り倒す沼もあるから注意してね。
865:デフォルトの名無しさん
21/08/26 09:00:20.61 b62pz5ME.net
数値計算に使うのならまずはSTL抑えておくだけでいいんじゃね?
C++言語自体の習得より、GPGPU、分散処理、SIMD、メモリ管理とかのノウハウ習得にまずは時間を割り当てるほうがよいと思う
866:デフォルトの名無しさん
21/08/26 09:28:17.30 eI1EN0aq.net
物理の計算とか、いろんな数学的な量が出てくる�
867:ッど、そういうのの演算がすべて プログラム上では同じ形で書ければかっこいいなあと思ったり。 例えば、(スカラー)積なら、オペランドが実数、虚数、ベクトル、行列、テンソル....等々どれでも 乗算オペレーターで扱えるとか。 「普通」の数値ライブラリだとオペランド毎に積を扱う関数がうんざりするほどあってそれを適切に 選ばないといけなかったりするので。
868:デフォルトの名無しさん
21/08/26 12:08:14.60 p2DPtxMk.net
829です。
皆さんいろいろとアドバイスありがとうございます。
自分が作ろうと思っているのは、Eigenを用いた金融系の数値計算ライブラリなのですが、テンプレートを用いたらいろいろな型を代入できて便利かな〜くらいの感じで作ろうとしていました。
templateの使い方自体は少し勉強してみましたが、メタプログラミングの概念自体もよくわかっていないので、ひとまずtemplateは後回しにしようかと思います。
オブジェクト指向で書くかどうかは実際にコードを書いてみてから考えてみたいと思います。
869:デフォルトの名無しさん
21/08/26 16:35:43.38 9wBQWoih.net
Eigen利用するだけか
それならまぁ無駄に時間かかるということも無いと思う(変なとこに拘らなければ
870:デフォルトの名無しさん
21/08/26 16:43:57.74 WPRv8+9f.net
>>836
コンピューターというか主要な高級プログラミング言語が出来て50年以上経つが
だれもそういうことをやってないのは何故だと思う?
871:デフォルトの名無しさん
21/08/26 16:45:12.60 WPRv8+9f.net
ちなみに SciPy とか SymPy は良く出来てる方
872:デフォルトの名無しさん
21/08/27 14:40:33.39 RrJjtAzF.net
>>839
template使ったらもう型にとらわれなくていいんじゃね?はC++学習者の必ず通る道やからしゃーない
873:デフォルトの名無しさん
21/08/27 15:05:57.44 nK81wxcE.net
で、結局なんでできないの?
C APIのほうが汎用性が高いから?
行列やテンソルは乗算方法が複数あるから?
結果の表現形式も有理数とか複数あるから?
結果をエレベーションする必要があるから?
874:デフォルトの名無しさん
21/08/27 17:44:56.54 LFMqkLz6.net
extern "C" 使ってる?
875:デフォルトの名無しさん
21/08/27 17:53:48.43 nK81wxcE.net
>>843
Cで開発するときに、常にヘッダファイルに書いておく必要があるかどうかって話なら、将来c++から呼び出す可能性があるなら書いておけば?
最悪なくてもインクルードする側でどうにかなる
876:デフォルトの名無しさん
21/08/27 19:22:59.35 ghUXxVcH.net
>>843
32bitとはいえマイコンで-std=gnu++17とか指定するのは微妙な背徳感を感じてしまうチキンだが、
Cのライブラリも一緒に使うから、普通に使ってるな。基本ヘッダファイルでほとんど事足りるんだけど、
weak指定のCの割り込みハンドラとか再定義するときは混乱しないように明示的にextern "C"付けてる。
877:デフォルトの名無しさん
21/08/29 01:50:34.33 TPHdi4yb.net
>>841
operator置き換えまくりとかな
878:デフォルトの名無しさん
21/08/29 10:17:41.53 sPGAkNt4.net
>>841
設定読み込みの部分でお世話になったわ
879:デフォルトの名無しさん
21/08/30 14:54:09.69 a7szkEqk.net
C++17は甘え
880:デフォルトの名無しさん
21/08/30 20:54:03.52 i7moqIxZ.net
甘えてもいいぜ
881:デフォルトの名無しさん
21/09/08 21:07:44.76 QZMwNs5W.net
C99で良いです……
882:デフォルトの名無しさん
21/11/24 18:53:15.36 ONXwk6fD.net
void *q = (void*)p;
void *r = reinterpert_cast<void *>(p);
void *s = static_cast<void *>(p);
どっちが良い?
883:デフォルトの名無しさん
21/11/24 22:24:01.60 7YsOMgZx.net
p の型によるんじゃね?
884:デフォルトの名無しさん
21/11/25 14:45:18.21 Ts2h3uwp.net
>>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)
みたいに確定して呼ぶことになるんだが
そういうもの?
885:デフォルトの名無しさん
21/11/26 19:09:15.51 ZkEvf+9l.net
Eigen使ったことないけど、それ多分動的なサイズ指定だよね
コンパイル時にサイズ分かってない奴じゃね
886:デフォルトの名無しさん
21/11/27 15:14:48.94 dxTMcmeT.net
fstream で open するオプションで
ios:in ios:out ios:binary とかと
ios_base:in ios_base:out ios_base:binary とかと
何が違うのでしょう?
887:デフォルトの名無しさん
21/11/29 16:58:44.62 Afxc3rI9.net
おなじ
:: だろうけど
888:デフォルトの名無しさん
21/12/06 10:19:18.78 aQJDsz9k.net
一般的にプリプロセッサのビットシフトに制限てありますか?
#define HOGE (1<<27)
だとダメで
#define HOGE (0x8000000)
だとOKだとかありますかね?
889:デフォルトの名無しさん
21/12/06 10:50:06.54 7ju/18KI.net
>>857
プリプロセッサはその define値をその記述通りの文字列(というか文)としか見てなくて、単にその定義名の所へはめ込むだけじゃない?
あとは嵌め込まれた後の文脈でコンパイラが解釈するんじゃないかな。
890:デフォルトの名無しさん
21/12/06 12:49:27.90 T2nrofKv.net
>>858
そう言われてみればそうですよね
トンチンカンな質問失礼しました
891:はちみつ餃子
21/12/06 13:31:07.92 Fu08U5Ef.net
>>857
定義での制限はないが、マクロの制御定数式として表れる場合、
つまり
#if HOGE > 0
みたいな前処理指令があった場合に全ての符号付整数型が intmax_t 、
全ての符号無し整数型が uintmax_t と同じ表現を持つというルールがあるので
通常の式とは解釈が違う。
(大抵の場合に intmax_t は long long int と同じ大きさだと思う。)
つまり普通の式としてならオーバーフローする場合でもプリプロセッサではオーバーフローしないこともあるので、
制限としてはむしろ緩い。
URLリンク(wandbox.org)
892:デフォルトの名無しさん
21/12/08 17:56:15.71 ouf8qdPn.net
std::listのsortを使ってるのですが
同値だった場合の順序が維持されず困ってます。
何かよい手はないですか?
比較関数を渡してるのですがその中で何とかならないでしょうか?
893:はちみつ餃子
21/12/08 18:22:21.80 cTje1973.net
>>861
言語仕様上は std::list::sort は安定ソートなので
そうなってないなら標準ライブラリの実装が間違っているか使い方が間違っている。
894:デフォルトの名無しさん
21/12/08 18:28:56.67 ouf8qdPn.net
>>862
そうなんですね。ありがとうございます。
調べてみます。
895:デフォルトの名無しさん
21/12/09 05:48:07.42 4Thv0Igk.net
純粋仮想関数の通知メソッドの中から他所のアドレスを知りたい時C++だとどう書くのが一般的ですか?
896:デフォルトの名無しさん
21/12/09 07:40:39.36 bGgqEdHH.net
日本語でおけ
897:デフォルトの名無しさん
21/12/14 05:24:10.27 pHnakqcn.net
私の同僚のプログラマがC++で、あるソフトのプラグインをdll形式で作成しており
そのdllファイルは6割くらいの環境では問題なく動作しています。
しかし、ユーザーの環境次第で動かないことがあり
dllをインストールした状態でソフトウェアを起動しようとすると、ソフトウェア自体が起動しないというバグを抱えており
この問題の解決方法は数か月以上、見つかっていません。
そのdllはWindowsのみで動作するものであり、MacやLinuxには対応していません。
Windowsの何らかの設定に関係するバグなのでしょうか…?
バグの原因が一切分からず、彼の作業が進まないので私の作業も進まず、困っています。
私自身はC++でそのソフトのプラグインを作成したこともないですし、彼に何のアドバイスもできないので
このスレッドのお力をお借りしたいです。
dllを作成する際にユーザー環境でデバッグしてログを取得する方法など
何でも良いのでアドバイスがあったら教えてください。
エスパーを求めています。
898:デフォルトの名無しさん
21/12/14 05:56:13.12 6fha5luI.net
printfデバッグをファイルに書くとか
899:デフォルトの名無しさん
21/12/14 06:41:07.66 9Wj0xfjq.net
64bitと32bitの違い・・・ではないか
それかintel/amdどちらかにしかない命令使ってるとか、何か依存する部分があるとか??
900:デフォルトの名無しさん
21/12/14 08:10:32.07 o0cf+I8x.net
まずはエラーメッセージをだな
でもランタイムライブラリのオプションがMTじゃなくてMDになってると予想
901:デフォルトの名無しさん
21/12/14 08:23:33.51 T7uEaOwT.net
>>866
例外で落ちたりもせず、ただ起動しないの?
起動しない環境の特徴も分からない?
なにかしらのセキュリティソフトが入ってるとか。
902:デフォルトの名無しさん
21/12/14 10:16:08.28 e0HER7LA.net
>>866
>6割くらいの環境では問題なく動作
落ちる環境のPCで開発させてみるといいんじゃね
903:デフォルトの名無しさん
21/12/14 11:09:39.54 RuQEsKMi.net
そのプラグイン dll が vcのランタイムを要求してて 実行環境にvcのランタイムが入っていない
プラグインdllの性質上 ソフトが自前で LoadLibary するが、そこで失敗する
この際何が主因なのかわからないまま
静的なリンクなら ○○が見つかりませんdialog がでてすぐわかる
プラグインdll を Dependency Walker なりで そのDLLが必要としてる DLL を確認してみたら?
904:デフォルトの名無しさん
21/12/14 11:37:46.60 zJGtuVBB.net
>>872
ソフトの仕様や実装次第だけど、プラグイン読み込みに失敗して起動しないアプリもちょっと手抜き過ぎだよね
905:デフォルトの名無しさん
21/12/14 11:41:07.01 RuQEsKMi.net
>>873
わかったとしても、「モジュール <プラグイン>.dll が見つからない」 としか書きようがなくてややこしい
※ 本当に見当たらないのは <プラグイン>.dll がさらにロードしようとしてる MSVCR○○.dll とかだから
906:デフォルトの名無しさん
21/12/14 11:43:56.15 RuQEsKMi.net
プラグインのロード失敗で 即exit するのも不親切かもね
907:デフォルトの名無しさん
21/12/18 10:46:11.74 RFbyER+p.net
グローバル変数かstatic変数使ってないか?
昔他所のモジュールと変数の書き換え合戦が起きて正常に動作しない事があった
908:デフォルトの名無しさん
21/12/19 15:15:53.34 bLFtEsOT.net
>>876
static なら他所と競合しないんじゃない?
あとグローバル変数が仮に extern だったとしても、意図的にエクスポートしてなければ他所の DLL と競合はしないような。
909:デフォルトの名無しさん
21/12/19 17:40:07.63 150MzqYw.net
拡張子dllでも独自の実装してるホストプログラムあるからなぁ…
それこそホストの開発者に�
910:キくしかない
911:デフォルトの名無しさん
21/12/19 23:17:52.32 mIjShW6/.net
自前でできることは
1) DllMain の DLL_PROCESS_ATTACH、 DLL_PROCESS_DETACH に
printf を仕込んで 最低限 load がなされてるかを確認
2) load されてるのなら
最初に呼ばれるであろうexportしてる関数にがんがん printf を仕込んで 何処で死んでるかを確認
912:デフォルトの名無しさん
21/12/24 03:18:25.98 pnvTuQZD.net
規格厨ほど仕事ができなくね
どうでもいいようなことにこだわってないで
さっさと仕事終わらせろよ
913:デフォルトの名無しさん
21/12/24 10:00:30.81 YmgFPSRd.net
またお前か
何年立ったらルール覚えられるんだよ
つかえねーな
914:デフォルトの名無しさん
22/01/17 19:13:47.29 Xn5FtFWo.net
メンバ関数へのポインタで質問なのですが
class MyClass {
public:
void (MyClass::*p)();
void func();
};
int main() {
MyClass obj;
このようなクラスがあったとして
main関数でobjのメンバの関数ポインタpへfuncのアドレスを入れる書き方と
pを使ってfuncを呼ぶ書き方を教えて下さい
915:デフォルトの名無しさん
22/01/17 19:29:52.39 pwXKfNQA.net
>>882
obj.p = &MyClass::func;
(obj.*(obj.p))();
916:デフォルトの名無しさん
22/01/17 20:40:50.75 iHDNpEw/.net
C++でオブジェクト指向を学びたいなと思ってるのですが、みなさんはどのように学びましたか?
既存のゲームの機能追加などをサークルでやっていて、C++自体には慣れてきて次のステップに進みたいと思いました.
917:デフォルトの名無しさん
22/01/17 20:47:51.30 h5bglXe3.net
ただただ自分でクラス設計考えて実際に書いて、さらにそれをあちこちで使ってみるだけ
実際に書く、利用する、をサボると机上の空論しか語れない頭でっかちになる
918:デフォルトの名無しさん
22/01/17 20:50:24.57 Xn5FtFWo.net
>>883
ありがとうございます
919:デフォルトの名無しさん
22/01/26 21:23:31.72 HoA8G4VO.net
初心者です。
自作クラスを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' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。
920:蟻人間
22/01/26 21:34:31.80 bGQQ0+uk.net
>>887
myClass::operator==を定義してみ。
921:デフォルトの名無しさん
22/01/26 22:43:54.69 HoA8G4VO.net
>>888
オペレータに何を定義すれば良いか分かりません
922:蟻人間
22/01/26 22:53:20.32 bGQQ0+uk.net
>>889
eraseの仕様を見れば内部で要素を比較していることがわかる。
そこでmyClassとintの比較を定義する必要がある。
bool operator==(int n) const
{
return n == num;
}
923:蟻人間
22/01/26 22:55:52.03 bGQQ0+uk.net
あるいは
friend bool operator==(const myClass& my, int n)
{
return my.num == n;
}
924:デフォルトの名無しさん
22/01/26 23:02:17.85 HoA8G4VO.net
蟻人間さん、ご丁寧に教えてくださり、本当にありがとうございます。
無事問題が解決しました
925:デフォルトの名無しさん
22/01/27 07:58:45.49 Fon8EKoL.net
delListはインデックスだからvector::eraseではなかろーか
URLリンク(ideone.com)
926:デフォルトの名無しさん
22/01/28 15:24:34.96 HENDwGdD.net
msvcのコンパイルが遅いのとメモリ大量に使うのとで大変辛いのですが、コンパイルだけ別の端末で出来たりしませんか?
927:はちみつ餃子
22/01/28 15:33:38.19 hT9TavA0.net
>>894
GitHub Actions
928:デフォルトの名無しさん
22/01/28 16:19:19.11 gre2uKRK.net
VARIANT型をログ出力したいときはどうしたらよいでしょうか?
929:はちみつ餃子
22/01/28 16:23:28.54 hT9TavA0.net
>>896
std::variant (C++17 以降) のこと?
それとも COM で使う VARIANT のこと?
それとも特定の実装 (または規約) ではなく動的型一般のこと?
930:デフォルトの名無しさん
22/01/28 16:59:31.61 gre2uKRK.net
>>897
Comのです
931:はちみつ餃子
22/01/28 17:44:30.90 hT9TavA0.net
何がわからないの?
基本的な数値型や配列以外の場合にどう文字列化すればいいかわからないってこと?
932:デフォルトの名無しさん
22/01/28 17:57:24.82 gre2uKRK.net
VARIANT.ToString的なのないかな?的な
みんな自分で作ってるの?
933:はちみつ餃子
22/01/28 23:10:21.87 hT9TavA0.net
>>900
VARIANT は基本的な型だけでなく COM のオブジェクト (を指すポインタ) を含むこともある。
COM におけるオブジェクトは「少なくとも IUnknown インターフェイスは実装されている」という保証 (規約) があるだけで、
それをどのように表示できるのかは汎用的には決めようがない。
基本的な型だけでも簡易的に文字列化するものがあるとちょっとしたデバッグ用途などでありがたいというのはわからんでもないけど。
934:デフォルトの名無しさん
22/01/28 23:24:19.57 A8Zj7Ozq.net
>>901
オブジェクトはそのポインタ値を表示とかよくある
935:はちみつ餃子
22/01/28 23:39:29.92 hT9TavA0.net
ログ用途だとアドレスだけでは意味が薄そうに思うけど……
(実行のたびに値は変わるだろうし、検証に使えない。)
少なくとも整数などではないという区別が出来れば十分ということはあり得るかな。
タイプライブラリがちゃんと用意されているなら型名などが取得できる場合もあるので可能ならそういう情報も欲しいけど、
いずれにしても「文字列にする」という要求はユースケースが多用すぎて標準的な機能として決め打ちはしづらい。
936:デフォルトの名無しさん
22/01/28 23:47:34.07 Bry4gZCu.net
>>903
Aのルーチンで使ってるオブジェクトとBのルーチンで使ってるオブジェクトが同じかどうかはわかる
それ以上のことを知りたいなら個別に表示ルーチンを組むしかない
937:デフォルトの名無しさん
22/01/29 16:18:19.62 F6gMvu/h.net
ガチガチの初心者です
#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にソース分割したいのですがどのようにすればよいでしょうか
938:デフォルトの名無しさん
22/01/29 16:41:33.39 LNIGuTho.net
>>905 その3つファイル作って切り貼りして保存すればいいんじゃね。
939:デフォルトの名無しさん
22/01/29 16:44:31.98 F6gMvu/h.net
>>906
すみません、書き方が悪かったです。分割の仕方?切り貼りして保存する3つのファイルの中身の書き方が知りたいです。
940:デフォルトの名無しさん
22/01/29 16:47:36.64 3ZSK4aSw.net
>>907
なぜ調べもしない?
「C言語 分割コンパイル」でググりゃ
941:あ出てくるっしょ
942:デフォルトの名無しさん
22/01/29 16:48:20.54 LNIGuTho.net
>>907 自分でやった結果を見せてもらわないと何に困ってるのかわからない。
943:デフォルトの名無しさん
22/01/29 17:08:03.21 fQ9LbNHB.net
>>905
とりあえず func.f はやめとけ
944:デフォルトの名無しさん
22/01/29 17:27:29.71 54L0j00R.net
ふぉーとらんらんらん
945:デフォルトの名無しさん
22/01/29 17:27:47.66 CzloZbS7.net
>>905
どんな入門書にも書いてあるようなことを質問するのは嫌がられる。
学ぶ気がなく代わりにやらせようとしているように見えるので。
そんで関連する事柄が多いので質問が具体的でないと単純に情報量的にとてもここには書けない。
細々としたところで引っかかるのは当然あることだしそういうのは喜んで回答するから
何がわからずに引っかかってるのかもうちょっと具体的にして欲しい。
わからないことをまとめられないなら
とりあえず自分なりにやってみたらどうなったのか見せれば、
何がわかってないかこっちで推測できる可能性がある。
946:デフォルトの名無しさん
22/02/02 00:03:59.30 9peRckoc.net
if (fp = fopen("file.txt", "W+"))
って書くと↓が出るんだけど?
warning: suggest parentheses around assignment used as truth value
947:デフォルトの名無しさん
22/02/02 00:50:39.94 5Jw8HjAD.net
まあ気に食わないが括弧でくくってやってる
948:蟻人間
22/02/02 00:57:41.77 gV8dH/Sr.net
if文では、代入と比較の混乱が深刻で、警告を出さなければいけなかったと聞いてるが。
949:デフォルトの名無しさん
22/02/02 08:17:16.11 BmWHIg0d.net
論理型を省略した代償は高くつきすぎたな。
950:デフォルトの名無しさん
22/02/02 10:18:30.37 l1cc3wPX.net
0とヌルの違いも曖昧な部分があったな
951:はちみつ餃子
22/02/02 11:07:29.08 5i7w7V2o.net
>>913
強めの警告オプションを付けてたら言語仕様上の問題がないものでも良くない作法に対しては警告が出ることはある。
a && b || c
とかいう式でも (人間が) 優先度を勘違いしやすいから括弧を付けることを勧められるし、
インデントの付け方がずれてる場合とかも警告は出る。
余計なお世話だと思うなら大抵はオプションで抑制できるよ。
952:デフォルトの名無しさん
22/02/02 16:52:47.21 Os1L/Ifx.net
括弧でくくっただけじゃ文句いわれたこともあるので二重否定しとく
if (!!(fp = fopen("file.txt", "W+")))
953:はちみつ餃子
22/02/02 17:18:37.99 5i7w7V2o.net
C++17 以降では if 文の括弧の中に初期化を書けるようになった。
初期化の内容と判断に使う式をセミコロンで区切って書ける。
if (fp = fopen("file.txt", "W+"); fp)
このとき変数の宣言を書いてもよく、
if (FILE* fp = fopen("file.txt", "W+"); fp)
というようにすると、この変数のスコープを if 文の内側だけに制限できるので便利。
便利だから C にも導入して欲しい。
954:デフォルトの名無しさん
22/02/02 17:39:51.00 il4bRKm2.net
if括弧中で初期化なんて前からやってたことだし
今じゃ代入も初期化になったのか
955:はちみつ餃子
22/02/02 18:18:35.55 5i7w7V2o.net
>>921
以前は「条件が宣言でもよい」だったところに
あらたに「初期化文と条件のふたつを書ける」「初期化文は式、もしくは単純宣言である」というルールが追加された形。
956:デフォルトの名無しさん
22/02/08 08:24:13.76 vXrgdSa9.net
デストラクタだけ書いてあってムーブできないクラスをメンバ変数にすると色んな所でコンパイルエラーが出て困りました
値ではなくポインタで持つか、自分のクラスででムーブコンストラクタを書いたらとりあえずはエラーが出なくなったのですが、
こういうクラスは一体どう使われるのを想定して実装したんでしょうか?
957:デフォルトの名無しさん
22/02/08 18:34:16.03 SQWxHGFm.net
基底クラスからたくさん派生クラスを作りました。
基底クラスの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 と表示されてしまう。
}
958:デフォルトの名無しさん
22/02/08 19:25:55.42 WarIH046.net
Basicの配列にはBasicのオブジェクトしか入らないから、b30もコピーしたときにBasicになってしまったからだよ
Basic*の配列にするかvector<uniq_ptr<Basic>>を使えば
959:デフォルトの名無しさん
22/02/08 19:56:37.56 SQWxHGFm.net
>>925
ポリモーフィズム成功しました。基底クラスのポインタを使って解決しました。
また、基底クラスの変数にコピーすると派生クラス独自のメンバが全て無くなることが理解できました。
ありがとうございました。
void main(){
Basic*basic_array[9];
basic_array[0]=&b30;
basic_array[0]->work();//B30のメソッドが呼ばれた。
}
960:デフォルトの名無しさん
22/02/11 14:30:39.44 /nAwqwYv.net
>>925
> vector<uniq_ptr<Basic>>を使え
動的にインスタンスを作り始めた途端に、コンテナとスマートポインタが必要になりました。
見事すぎる回答に改めて感謝します。
961:デフォルトの名無しさん
22/02/18 10:16:19.82 +V9f8lU9.net
例外で飛んじゃうと後始末ができなくてメモリリークしちゃうんだけど
クラスでラップしてデストラクタっていちいちやる感じ?
962:デフォルトの名無しさん
22/02/18 10:30:02.61 +V9f8lU9.net
try~catchで囲えば処理できるけど
すべての例外が出る可能性のあるコード全部try~catchしちゃっていい?
963:デフォルトの名無しさん
22/02/18 11:08:23.85 v7utSHD9.net
>>928
「いちいちやる」っていうか、同種のリソースを扱うときはいつも必要になる対応だからデストラクタでいいんだよ。
大抵はunique_ptrとか標準にあるもので済むし。
964:はちみつ餃子
22/02/18 11:40:56.58 fowo2HBL.net
>>928
いちいち個別対応したくないからクラス定義に押し込めるんだよ。
965:デフォルトの名無しさん
22/02/18 12:17:15.52 +V9f8lU9.net
>>931
今回のとこちょっとなんだけどなぁ
例外発生するとこ全部でやらなあかんやんコレ
クソ杉ちゃう?
966:デフォルトの名無しさん
22/02/18 12:21:15.24 mVeDXtSU.net
なにいってんの
967:デフォルトの名無しさん
22/02/18 12:27:42.18 +V9f8lU9.net
えー、わからんのー?
つまり例外が発生しうるとこすべてで
尻切れトンボされる可能性があって
以前のようにmalloc-freeのコードが混じってるとそいつらは問答無用でメモリリークしちゃうって話よ
968:デフォルトの名無しさん
22/02/18 12:47:42.19 YFQd7auv.net
malloc/freeなら検出できるやん
969:はちみつ餃子
22/02/18 12:48:02.74 fowo2HBL.net
>>932
対処する必要があるところで catch して解放するだけだろう。
それがどうして出来ないんだ?
970:デフォルトの名無しさん
22/02/18 13:19:45.68 +V9f8lU9.net
まあ、それよ
そういう対応が必要になるって話よ
追加するやつ全部trycatchで包むか
mallocfreeをクラスで包むか
入れたのは20行程度なのにルーチンの流れまで変える必要があったりなかったりで(# ゚Д゚) イラッ!
971:デフォルトの名無しさん
22/02/18 13:39:34.12 v7utSHD9.net
>>934
malloc-freeしてる既存コードに例外発生する処理�
972:ャぜるなんて特殊状況ならしょうがない。 面倒な状況なのはわかる。あきらめて心を殺してtry catchするか小さいRAII用クラスを作るか。 あるいはmalloc-freeしてるところも標準コンテナやunique_ptrに置き換えていけばすっきりするかもね。
973:デフォルトの名無しさん
22/02/19 09:00:24.16 AlOKsuc0.net
>>932
クソすぎかもしれないが、それは必要だし普通だろ
974:デフォルトの名無しさん
22/02/19 10:43:55.59 MFjncly/.net
メモリ解放以外にデストラクタでやることはあるわけだしな
集約して定義しとけよという
975:デフォルトの名無しさん
22/03/09 22:51:16.35 wIy/pNxS.net
LinuxでyyyyMMddhhmmss.fffを出力する
一番簡単な方法を教えて下さい
976:デフォルトの名無しさん
22/03/09 23:05:24.02 w9Xuob20.net
printf("yyyyMMddhhmmss.fff");
977:蟻人間
22/03/09 23:58:24.65 ptoc1SJJ.net
GNU/Linuxを仮定
system("date +%Y%m%d%H%M%S.%3N\");
978:デフォルトの名無しさん
22/03/10 00:03:44.70 IfzvyEOT.net
日付のフォーマットなんて都度調べるもんな
覚えてる変なやつもいるんだろうね
979:蟻人間
22/03/10 00:11:23.45 3vn8A8hZ.net
URLリンク(shino-tec.com)
980:デフォルトの名無しさん
22/03/10 07:16:50.83 ZtFzrJEF.net
>>945
これやったら秒とミリ秒を別で取得してるので
秒が59.999(ミリ秒はイメージ)のときに
ミリ秒は00.002ってなるときに前回の値が59.857ぐらいだったとすると
59.002ってなってしまうので逆転が起きたときは前回の値と比較して
逆転してたらミリ秒を強制的に999にするとかダサイことやってるんですけど
マジでこんな方法しかないでしょうか?
981:デフォルトの名無しさん
22/03/10 07:48:07.93 E/Z/b8gJ.net
>>946
そのダサいことをやってるのは何行目?
見つからないよ
982:デフォルトの名無しさん
22/03/10 08:52:39.45 pPpJXJXf.net
localtimeが時刻取得だと思ったんじゃろうね
983:デフォルトの名無しさん
22/03/10 18:51:28.19 xl0leRXC.net
>>947
timespecで取得できるのがミリ秒だけだと思ってました
自分のプログラムでtime_tで取得できる関数と複合してたのが原因でした
984:デフォルトの名無しさん
22/03/10 20:18:24.41 udY9aSDo.net
あー、だめだ
localtime_rがないって言われる
985:デフォルトの名無しさん
22/03/10 20:21:17.65 udY9aSDo.net
localtime_sもないって言われる
しばらくクソ方法で保留で
986:デフォルトの名無しさん
22/03/10 20:46:05.68 xH/r/VUj.net
>>950
環境は?
987:デフォルトの名無しさん
22/03/10 23:26:58.80 udY9aSDo.net
>>952
ubuntu
988:デフォルトの名無しさん
22/03/11 00:11:00.88 3xV59ngV.net
rはあるやろ
989:デフォルトの名無しさん
22/03/11 13:08:09.69 2pJSEvK3.net
ビルドの設定いじってもらって通りました
ありがとう御座いました
990:デフォルトの名無しさん
22/03/17 11:34:53.41 qJRouQ9M.net
【質問】
switch constexpr って無いんですか?
【背景】
if constexpr(false){
}
if constexpr(false){
}
if constexpr(true){
}
if constexpr(false){
}
という記法に疲れました。
switch(定数) で実現可能ですが、コンパイラがwarningを出すので避けたいところです。
991:デフォルトの名無しさん
22/03/17 11:40:14.61 Y2OAtTnf.net
無いけど俺も欲しい
992:デフォルトの名無しさん
22/03/17 11:44:52.12 qJRouQ9M.net
>>957
早速の回答ありがとうございます。
否定的な解決で残念ですが、前向きに生きていきます!
993:デフォルトの名無しさん
22/03/19 13:40:31.67 nPptgbtB.net
クロスプラットフォーム対応のキーボードイベント入力・マウスイベント入力があるライブラリで、規模がそこまで大きくないものって何かありますか?
994:デフォルトの名無しさん
22/03/19 14:54:00.91 Q/NZ1
995:iFj.net
996:デフォルトの名無しさん
22/03/21 11:06:17.41 Prmlj1K5.net
>>960
情報ありがとうございます
ncursesだとWindowsで動かしにくいみたいなんでフォークのpdcursesでやってみます
997:デフォルトの名無しさん
22/03/26 22:10:06.23 U9Dry82x.net
>>908
ググって出てこないようなことをおまえら答えれるのか?
998:デフォルトの名無しさん
22/03/26 23:30:57.78 po6dvxnc.net
日本語で記述された問題や目的から有用なページを紹介するのはグーグル先生は苦手なんだよ。
核心的なキーワード抜きだと特に。
999:デフォルトの名無しさん
22/03/26 23:42:52.67 as/ML4Ec.net
>>962
軽く調べた結果:
URLリンク(el.mml.tuis.ac.jp)
URLリンク(www.cc.kyoto-su.ac.jp)
URLリンク(programming.pc-note.net)
どこだったか忘れたけど俺は検索して学んだ記憶がある
記憶違いかもしれないけど
1000:デフォルトの名無しさん
22/03/29 22:17:14.91 JBheGd8b.net
スマホが普及しきった2015年くらいからGoogle検索の難易度一気に上がったな
昔はガバガバキーワードでもGoogle先生が忖度してくれていた
1001:デフォルトの名無しさん
22/03/30 08:00:47.76 NklUKb3w.net
忖度の意味知らなそう
1002:デフォルトの名無しさん
22/03/30 10:53:25.40 2Q6y3di6.net
Google ADの顧客は優遇致します
1003:デフォルトの名無しさん
22/03/30 12:23:34.00 eoFMqmT7.net
広告出してくれるインチキ医療サイトや適当プログラミングスクール優遇しまーす!!
無能
1004:デフォルトの名無しさん
22/03/31 16:42:12.47 Pfu/lGwO.net
初心者歓迎ということで、ちょっと聞いてみたいのですが、c++の世界ではboostというライブラリは有名なのでしょうか?
c++で勤怠管理できるwebシステムを作るんだといってコンストラクタがなんだかわからないまま
boostを読んでヘッダファイルをいくつか読んだあたりで英語読めなくて投げ出したことがあります。
1005:デフォルトの名無しさん
22/03/31 16:48:44.96 R4GrqV7T.net
>>969
有名だけど、使わんほうがいいよ
標準で十分だよ
1006:デフォルトの名無しさん
22/03/31 17:01:55.62 Pfu/lGwO.net
>>970
ありがとうございます!!
それに、あなた有識者の方ですね?
もしよければ少しだけ詳しく評判を教えていただければ幸いです。
1007:はちみつ餃子
22/03/31 17:23:59.00 Dq8nC8PK.net
>>969
かなり有名で活発。
最初から標準化委員会の人がかかわってるし、 Boost が出自の機能が標準入りしたこともある。
ただ、実験的な要素も多分にある。
急に仕様がかわることもある。
適切な場面では適切だし適切でない場面では適切でないというごく普通の話なんで、
評判がどうこうというより何をしたくて Boost に関心を持ってるのか説明したほうがいいよ。
1008:デフォルトの名無しさん
22/03/31 17:31:25.58 Pfu/lGwO.net
>>972
ありがとうございます。
boostは今はそんなに興味は持っていないんですが、今ちょうどMIMEタイプらへんのところを読んでいて、
そういえばboostにMIMEタイプって書いてあったなぁ、boostって業界だとどんな感じなんだろ?という感じです。
何となくなのですが、仕様が良く変わるから使いにくいと言う感じなのかな?と理解しました。
1009:はちみつ餃子
22/03/31 17:51:26.52 Dq8nC8PK.net
>>973
標準ライブラリほどには互換性は意識されないってだけで、
特に実験的な部分を除いては頻繁に変わるというほどでもないけど。
アップストリームでの変更の影響を避けるために
必要な部分だけ抜き出して自分のプロジェクトツリーに入れておくという運用もよくあるし。
(そのためのツールも用意されている。)
URLリンク(www.boost.org)
1010:デフォルトの名無しさん
22/03/31 18:00:17.34 Pfu/lGwO.net
>>974
更に詳しく有難うございます。確かに抜き出しちゃえば変わらないですもんね。
他でも応用できそう。
1011:デフォルトの名無しさん
22/03/31 18:34:15.90 YOGNRVrk.net
boost自体は使う必要はないけど、boostのドキュメントを読めないやつも不要だよな
ドキュメントもしっかりしてるから、使うだけなら簡単に使えるし
1012:デフォルトの名無しさん
22/03/31 19:04:21.70 Pfu/lGwO.net
>>976
ありがとうございます。
boostくらい軽く読めないならエンジニアになるなと言うことですね。
初めて3か月くらいなもんでポートフォリオの一つもないですけれど、
本当に読んでおきますね。
1013:デフォルトの名無しさん
22/03/31 19:25:23.71 R4GrqV7T.net
これから年単位でトレーニングが続くのに初心者がいちいちポートフォリョーポートフォリョー言うのは大変めんどくせえ感
1014:デフォルトの名無しさん
22/03/31 23:41:57.85 Sxv2nhUu.net
boost有用性は分かっていてもコンパイル時間やらなんやらで本チャンに適用しにくいんだよなぁ
1015:デフォルトの名無しさん
22/04/01 01:53:53.30 46G1puQR.net
boostなんてtemplateで悪ふざけしてるだけだから
普通のアプリには使えない
1016:デフォルトの名無しさん
22/04/09 01:43:32.41 fJGplIUn.net
VC++である動画を再生するのにコーデックのDLLが必要なのですが
予めレジストリにDLL情報を登録して、実行ファイルと同じディレクトリにDLLを置けば動きます。
でも他の環境でレジストリに登録するのが大変なので(権限がらみで面倒)、登録なしでどうにか動かす事が出来ないでしょうか?
DLLを参照とかしても無理でしょうか?
1017:デフォルトの名無しさん
22/04/09 09:41:01.85 nJhutFId.net
レジストリで何を登録してるんだろう?
関数をexportするだけのsusieプラグイン
なんかはレジストリ登録不要で利用できるけど
1018:デフォルトの名無しさん
22/04/09 13:44:11.76 unOoTfDz.net
COMだろ
仕様が公開されてればLoadLibrary()して使えるんじゃね?
1019:デフォルトの名無しさん
22/04/09 14:04:17.62 ehpYMGIZ.net
DirectShowやMediaFoundationのcodecなら自分で呼ぶわけにもいかんだろうな
1020:デフォルトの名無しさん
22/04/09 17:06:35.88 fJGplIUn.net
みなさんレスありがとう。
>>984
たぶんこれなんですよね… やっぱ無理ですかね。
1021:985
22/04/09 18:31:18.53 fJGplIUn.net
今見たら、Video For Windowsの機能を利用してるみたいでした。
こんな古いのを使ってるから専用のコーデックを使わないといけないのか。
コーデックはH.264用のDLLみたいですね。どうにかならないかな。
HKEY_LOCAL_MACHINEにプログラムから簡単に登録出来ればいいんだけど。
なんか良い案はないでしょうか。
1022:蟻人間
22/04/09 19:04:00.95 3yKii3E5.net
権限が必要ならプログラムのマニフェストで権限を要求。
自動化が必要なら、必要なコマンドラインを調べてバッチプログラム化する。
1023:デフォルトの名無しさん
22/04/09 19:39:38.43 fJGplIUn.net
>>987
ありがとうございます。調べてやってみます。
1024:デフォルトの名無しさん
22/04/09 19:45:37.96 s5Ocn4sk.net
一般的な動画再生ソフトでもコーデックをインストールしないと見れないのがあるが
一方、コーデック内臓もあるので技術的にはインストール不要だとおもうが
やり方はしらん、どっちも
1025:985
22/04/10 14:43:33.45 pRTmUSXM.net
とりあえずはマニフェストの設定変更で、起動した時に権限要求するようにしました。
調べて更に良い方法あればまた変更するつもりです。みなさんレスありがとうございました。
1026:デフォルトの名無しさん
22/04/14 15:42:21.39 VkbtJkFZ.net
SIMDの勉強中で、下のようなことをしたいのですが、コンストラクタでエラーになります。
プリミティブ型をアライメント指定してnew,deleteするにはどうすればいいですか?
class MyClass {
public:
MyClass() : member(new (std::align_val_t{32}) int[1000]) {}
~MyClass() { delete[] member; }
int* member;
};
1027:デフォルトの名無しさん
22/04/14 16:34:45 4tVKG4Xu.net
コンパイラの吐き出すエラーは見た?
std::align_val_t を使えるのは C++17以降みたいだけど
そこらへんは大丈夫?
(※ ideone は C++14までやよね?)
1028:991
22/04/14 16:56:57.03 VkbtJkFZ.net
>>992
C++20です。
visual studio 2022でエラーC2956が出ます。
エラーのリンク先には構造体をnewしたい場合の対処法が書かれてます。
対処法:構造体の宣言時にalignas()でアライメント指定する。
プリミティブ型を宣言することができない(?)ので、この対処法では解決できませんでした。
1029:デフォルトの名無しさん
22/04/15 15:16:32 KM+JgYPL.net
うめ
1030:デフォルトの名無しさん
22/04/15 15:16:44 KM+JgYPL.net
埋め
1031:デフォルトの名無しさん
22/04/15 15:16:54 KM+JgYPL.net
ume
1032:デフォルトの名無しさん
22/04/15 15:17:03 KM+JgYPL.net
梅
1033:デフォルトの名無しさん
22/04/15 15:17:12 KM+JgYPL.net
ウメ
1034:デフォルトの名無しさん
22/04/15 15:17:37 KM+JgYPL.net
生め
1035:デフォルトの名無しさん
22/04/15 15:17:46 KM+JgYPL.net
産め
1036:1001
Over 1000 Thread .net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 641日 1時間 25分 58秒
1037:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています