C++相談室 part133
レス数が1000を超えています。これ以上書き込みはできません。
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured データメンバへのアクセスはthis経由なので
ポインタにオフセットを書けて逆参照という動作になる
左辺値参照の場合はオフセットなしで逆参照
いずれにせよ仮引数を受け取るという点は同じ動作だ
最適化という観点からはデータメンバはrestrictが付いているようなもので
若干有利ではないかな
ただしデータメンバの場合は全ての非静的メンバ関数が関与する可能性があり
仮引数の場合は当該関数のみというアクセス範囲の違いがあるので
最適化する以前の、基本的な設計で選ぶべきだろう できるけど、モーダルでもモードレスでもかなりうぜえぞ
template <typename T>
void display(T const& variable)
{
stringstream ss;
ss << variable;
MessageBox(NULL, ss.str().data(), typeid(variable).name(), MB_OK);
} 質問させてください。VS2008で仮想継承使っていたら以下の警告が出たんですが、警告が出ないようにするにはどうすればいいでしょうか?
warning C4250: 'CHoge' : 2 つ以上のメンバが同じ名前を持っています。'CTest1::CTest1::Draw' から継承します。
----------------------
class ITest1 {
public: virtual void Draw() = 0;
};
class CTest1 : virtual public ITest1 {
public: virtual void Draw() { printf("Draw\n"); }
};
class ITest2 : virtual public ITest1 {
public: virtual void Func() = 0;
};
class CHoge : public ITest2, public CTest1 {
public: virtual void Func() {}
}; VS2017ではデフォでは何も言ってこず
/W4にするとC4250が出る
warningだろ? errorは直すしかないが
warningは内容を読んで理解したうえでどうするかを判断するものだ
必ず消そうと思うな、キリねえぞ
意味を理解しないからdisられたと思っちまうんだよ どうしても「消すこと」が絶対ならこれやっとけ
#pragma warning(disable : 4250) >>955
なんでITest2を仮想継承してないの? この場合どっちを継承するとかの問題もないし
普通にこっちにも virtual つければいいだけだと思うが vc だと違うのか?
>>955
>class CHoge : public ITest2, public CTest1 {
>public: virtual void Func() {}
>};
こう
class CHoge : virtual public ITest2, virtual public CTest1 {
public: virtual void Func() {}
}; おまえら質問者に教えて貰うあべこべになりそうだなw iTest2のDraw()が零でCTest1のDraw()が定義されているからそりゃ衝突する罠 >>956
VS2017では警告出ないのですか。試して頂いてありがとうございます。
自分なりに意味を考えたところ、
無視して大丈夫そうという結論に至りました。
#pragma で消す事にします。
>>958
1つにしたいのはITest1::Drawだけなので、
ITest1のみ仮想継承しました。
>>959
試してみましたが、同じ警告が出てしまいました。
>>961
衝突した結果、有効な方が選択されるので特に問題なさそうな気がしますね。 boost::spirit::qiで
boost::spirit::qi::rule<std::string::iterator, std::string()> hogehoge;
としてとき std::string() のようにかっこ付でテンプレート引数に与えていますが
このかっこ付で型名をあたえる方法はどのように活用できますか?(一般論として それは特別な方法ではなく普通の『引数をとらずstringを返す関数型』の指定でしかないから
一般論として普通はテンプレートで関数の型を明示的に指定したいときに活用する ありがとうございます。
引数のシグネチャに戻り値を加えたものってことでいいんですかね?
これで関数の入出力の型をテンプレートが知ることができるということですか 質問お願いします。
装置制御のプログラムを組みたいと思っているのですが、最適な言語はC++でいいのか迷っています。
内容としては、イベントを開く際に、一軒家の室内灯のオンオフ制御や、スイッチの信号受信、信号を送信しての仕掛の動作などです。
現在理解している言語はVBAのみです。
どの言語を学習するにしろ、ほぼ一からの学習になると思うので、最適な言語は何なのか調べているところです。
最適なものはC++なのか、それとも他にあるのか教えて頂けたら幸いです。 対象は全く問題ないがC言語を理解したあとでないといきなりC++を学うのは危険です。 >>970
>>973
ハードは管理用に新調する予定なので、装置制御に最適なものを合わせて教えて頂けますか? どうやって照明をオンオフするの?
元からコンピュータによる照明制御の仕組みが備わってる建物か照明自体に無線通信機能のついてるやつじゃないと無理じゃね? それか物理的にスイッチを押す装置を取り付けるか... >>975
元から付いている室内灯の制御は無理ということでしょうか?
それであればLEDを後付けして、擬似的な室内灯として制御したいです。 LEDを後付けとは?照明用のLED並みに明るいLEDを部屋に置くということ?
照明をリモコン化する商品はたくさんあるようだからそれらを使って既存の照明を無線化することもできるが。 >>978
ただオンオフするだけではなく、少し点滅させるような演出も入れたいんです。
無線の照明だとそのような演出は難しいですよね? 無線のでもオンオフを繰り返せばいいはず。
後付けの照明って室内灯レベルには照らせなさそうだがそれでも問題ない? >>980
>>981
ホラー映画でよくあるような、蛍光灯がジジジ・・・ジジ・・・ジとする点滅をさせたいです
明るさとしては通常の室内灯レベルは求めませんが、出来る限り明るくしたいです いい照明装置が見つかったとして、こういうSSRとArduinoを使ってAC電源を制御するとか。Arduinoなら言語は必然的にC言語。
http://akizukidenshi.com/catalog/g/gI-08620/ なるほど、明るさをじわーっと変化させたりじゃないのね
で、C++の話に戻るけど
C++を使うならC++コンパイラがあるCPUを選ぶ必要があるぞ
たとえばg++を使うならARMはいいけどPIC16F84なんかは無理 >>983-985
Arduinoという物を使うと良いんですね。
ありがとうございます。
Arduinoについて調べてみます。 Wifi対応のLED電球をスマホで制御ならやったことある
この程度でいいなら制御側はなんでもいい気がする std::vectorの[]演算子って引数の型がstd::size_tで定義されてるけどint型とかshort型で渡すと暗黙の型変換がかかって遅くなる? 大抵の石では拡大型変換は多くても1命令でできるので、遅くなるっちゃ遅くなるけどそこまで気にするほどでもない
更に言うと、コンパイラの最適化次第では型変換を省略して0命令になるかもしれない
よほど変態的な型変換を挟むとか、組み込み等で1命令でも削減したいとかでなければ、あまり深く考えても… その前にさ
size_tでないならじゃあ何型であるべきだと思っているんだ?
displacement(base + index)というアドレス計算のindexに当たるところだが >>994
質問者は「遅くなるか」と聞いているんだぜ
何と比べてだ? というのが993の論旨 遅くなる可能性はある
遅くなったとしても微妙
というのが回答 [ ] のコストが問題で高速化したいなら
data() で生ポで扱うとか
アセンブラを使うとか
ループアンロールとか
複数ループの結合とか
まあ色々とテクニックはある
マルチスレッド化、GPU利用、アルゴリズム改善...
など、もっと大きなレベルの最適化も [ ] のコストが問題になるのは非常に小さなループだろうから
型くらいはコンパイラが勝手に最適化するのが普通 実際に問題になっている事が確かめられて無いのなら
最適化しないで普通にコードを書いた方が良い
見やすさ、変更のしやすさ、移植性、バグの出にくさ、...
などの理由で このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 56日 16時間 0分 49秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。