X



C++相談室 part133
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
垢版 |
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0
次スレを立てる時は本文の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
0952デフォルトの名無しさん (ワッチョイ add5-UJUP)
垢版 |
2018/01/16(火) 06:29:10.56ID:zATeRHxg0
データメンバへのアクセスはthis経由なので
ポインタにオフセットを書けて逆参照という動作になる
左辺値参照の場合はオフセットなしで逆参照
いずれにせよ仮引数を受け取るという点は同じ動作だ

最適化という観点からはデータメンバはrestrictが付いているようなもので
若干有利ではないかな

ただしデータメンバの場合は全ての非静的メンバ関数が関与する可能性があり
仮引数の場合は当該関数のみというアクセス範囲の違いがあるので
最適化する以前の、基本的な設計で選ぶべきだろう
0953デフォルトの名無しさん (ワッチョイ a99f-IxFb)
垢版 |
2018/01/16(火) 06:49:48.40ID:TUkAINts0
messageboxで変数は表示できますか。
0954デフォルトの名無しさん (ワッチョイ add5-UJUP)
垢版 |
2018/01/16(火) 07:53:30.35ID:zATeRHxg0
できるけど、モーダルでもモードレスでもかなりうぜえぞ
template <typename T>
void display(T const& variable)
{
stringstream ss;
ss << variable;
MessageBox(NULL, ss.str().data(), typeid(variable).name(), MB_OK);
}
0955デフォルトの名無しさん (ワッチョイ e531-BgxS)
垢版 |
2018/01/16(火) 17:35:22.56ID:GcKo/GK70
質問させてください。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() {}
};
0956デフォルトの名無しさん (ワッチョイ add5-UJUP)
垢版 |
2018/01/16(火) 18:00:29.71ID:zATeRHxg0
VS2017ではデフォでは何も言ってこず
/W4にするとC4250が出る

warningだろ? errorは直すしかないが
warningは内容を読んで理解したうえでどうするかを判断するものだ
必ず消そうと思うな、キリねえぞ

意味を理解しないからdisられたと思っちまうんだよ
0958デフォルトの名無しさん
垢版 |
2018/01/16(火) 18:08:17.81
>>955
なんでITest2を仮想継承してないの?
0959デフォルトの名無しさん (スプッッ Sdea-IjLh)
垢版 |
2018/01/16(火) 18:11:37.58ID:JbjA4DiDd
この場合どっちを継承するとかの問題もないし
普通にこっちにも 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() {}
};
0962デフォルトの名無しさん (ワッチョイ e531-BgxS)
垢版 |
2018/01/16(火) 20:35:10.19ID:GcKo/GK70
>>956
VS2017では警告出ないのですか。試して頂いてありがとうございます。
自分なりに意味を考えたところ、
無視して大丈夫そうという結論に至りました。
#pragma で消す事にします。
>>958
1つにしたいのはITest1::Drawだけなので、
ITest1のみ仮想継承しました。
>>959
試してみましたが、同じ警告が出てしまいました。

>>961
衝突した結果、有効な方が選択されるので特に問題なさそうな気がしますね。
0963デフォルトの名無しさん (ワッチョイ 2a98-4pcN)
垢版 |
2018/01/17(水) 12:08:14.47ID:iC3iQa/y0
boost::spirit::qiで
boost::spirit::qi::rule<std::string::iterator, std::string()> hogehoge;
としてとき std::string() のようにかっこ付でテンプレート引数に与えていますが
このかっこ付で型名をあたえる方法はどのように活用できますか?(一般論として
0964デフォルトの名無しさん (ワッチョイ 0aa8-XiqC)
垢版 |
2018/01/17(水) 13:05:18.47ID:K0Busrpg0
それは特別な方法ではなく普通の『引数をとらずstringを返す関数型』の指定でしかないから
一般論として普通はテンプレートで関数の型を明示的に指定したいときに活用する
0965デフォルトの名無しさん (ワッチョイ 2a98-4pcN)
垢版 |
2018/01/17(水) 14:11:03.20ID:iC3iQa/y0
ありがとうございます。
引数のシグネチャに戻り値を加えたものってことでいいんですかね?
これで関数の入出力の型をテンプレートが知ることができるということですか
0969デフォルトの名無しさん (ワッチョイ a37f-QRuf)
垢版 |
2018/01/19(金) 10:25:28.43ID:2zN3bRh70
質問お願いします。
装置制御のプログラムを組みたいと思っているのですが、最適な言語はC++でいいのか迷っています。
内容としては、イベントを開く際に、一軒家の室内灯のオンオフ制御や、スイッチの信号受信、信号を送信しての仕掛の動作などです。
現在理解している言語はVBAのみです。
どの言語を学習するにしろ、ほぼ一からの学習になると思うので、最適な言語は何なのか調べているところです。
最適なものはC++なのか、それとも他にあるのか教えて頂けたら幸いです。
0970愛知人
垢版 |
2018/01/19(金) 10:28:45.88ID:96/ZCuec
そんなんハードウェアによるだろ
0972デフォルトの名無しさん (スップ Sd03-kqG9)
垢版 |
2018/01/19(金) 10:50:54.04ID:5gb0XR0Xd
C++がベスト
0975愛知人
垢版 |
2018/01/19(金) 11:09:04.52ID:96/ZCuec
どうやって照明をオンオフするの?
元からコンピュータによる照明制御の仕組みが備わってる建物か照明自体に無線通信機能のついてるやつじゃないと無理じゃね?
0976愛知人
垢版 |
2018/01/19(金) 11:11:31.52ID:96/ZCuec
それか物理的にスイッチを押す装置を取り付けるか...
0978愛知人
垢版 |
2018/01/19(金) 11:21:06.90ID:96/ZCuec
LEDを後付けとは?照明用のLED並みに明るいLEDを部屋に置くということ?
照明をリモコン化する商品はたくさんあるようだからそれらを使って既存の照明を無線化することもできるが。
0981愛知人
垢版 |
2018/01/19(金) 11:32:59.39ID:96/ZCuec
無線のでもオンオフを繰り返せばいいはず。
後付けの照明って室内灯レベルには照らせなさそうだがそれでも問題ない?
0985デフォルトの名無しさん (ワッチョイ f5bb-nLHG)
垢版 |
2018/01/19(金) 12:09:17.61ID:jSqbt2Li0
なるほど、明るさをじわーっと変化させたりじゃないのね

で、C++の話に戻るけど
C++を使うならC++コンパイラがあるCPUを選ぶ必要があるぞ
たとえばg++を使うならARMはいいけどPIC16F84なんかは無理
0989愛知人
垢版 |
2018/01/20(土) 00:21:47.27ID:sgAjbMHf
型はコンパイル時に決定されるのでは?
0990デフォルトの名無しさん (ワッチョイ 557f-GP+B)
垢版 |
2018/01/20(土) 00:29:04.03ID:gCiUg27G0
キャストはコストがかかるってメイヤーズが言ってた
0992デフォルトの名無しさん (ワッチョイ d5b3-uO2t)
垢版 |
2018/01/20(土) 02:12:08.07ID:m8g+JTvk0
大抵の石では拡大型変換は多くても1命令でできるので、遅くなるっちゃ遅くなるけどそこまで気にするほどでもない
更に言うと、コンパイラの最適化次第では型変換を省略して0命令になるかもしれない
よほど変態的な型変換を挟むとか、組み込み等で1命令でも削減したいとかでなければ、あまり深く考えても…
0994デフォルトの名無しさん
垢版 |
2018/01/20(土) 06:51:43.72
>>993
誰もそこは問題にしてないだろ
0997デフォルトの名無しさん (ワッチョイ 8576-3us9)
垢版 |
2018/01/20(土) 08:45:09.85ID:y71EKvJV0
[ ] のコストが問題で高速化したいなら
data() で生ポで扱うとか
アセンブラを使うとか
ループアンロールとか
複数ループの結合とか
まあ色々とテクニックはある

マルチスレッド化、GPU利用、アルゴリズム改善...
など、もっと大きなレベルの最適化も
0999デフォルトの名無しさん (ワッチョイ 8576-3us9)
垢版 |
2018/01/20(土) 08:48:22.54ID:y71EKvJV0
実際に問題になっている事が確かめられて無いのなら
最適化しないで普通にコードを書いた方が良い

見やすさ、変更のしやすさ、移植性、バグの出にくさ、...
などの理由で
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 56日 16時間 0分 49秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。