次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
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
探検
C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
2017/07/29(土) 11:28:28.97ID:o30VDF4g0762デフォルトの名無しさん (ワッチョイ faa6-u5jE)
2017/09/23(土) 22:34:01.05ID:qTNnvPi+0 https://ideone.com/x9PCnt
こんなんでええやろ
こんなんでええやろ
763デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/23(土) 22:36:10.87ID:dWsmcDp10 >>760
こういう解釈でいいかな?
template <typename T, std::size_t X>
void fillA2B(T (&A)[X*X*X], T (&B)[X*X*X], int ax1, int ax2, int ax3)
{
int i, j, k;
int& ii = (ax1==1)? i: ( (ax1==2)? j: k );
int& jj = (ax2==1)? i: ( (ax2==2)? j: k );
int& kk = (ax3==1)? i: ( (ax3==2)? j: k );
for ( i = 0 ; i < X ; ++i )
for ( j = 0 ; j < X ; ++j )
for ( k = 0 ; k < X ; ++k )
B[ii + X * jj + X * X * kk] = A[i + X * j + X * X * k];
}
int main()
{
const int N = 2;
int A[N*N*N], B[N*N*N];
int n{0};
for ( int a = 0 ; a < N*N*N; ++a )
A[a] = n++;
fillA2B<int, N>(A, B, 1, 2, 3);
fillA2B<int, N>(A, B, 2, 3, 1);
fillA2B<int, N>(A, B, 3, 1, 2);
return 0;
}
こういう解釈でいいかな?
template <typename T, std::size_t X>
void fillA2B(T (&A)[X*X*X], T (&B)[X*X*X], int ax1, int ax2, int ax3)
{
int i, j, k;
int& ii = (ax1==1)? i: ( (ax1==2)? j: k );
int& jj = (ax2==1)? i: ( (ax2==2)? j: k );
int& kk = (ax3==1)? i: ( (ax3==2)? j: k );
for ( i = 0 ; i < X ; ++i )
for ( j = 0 ; j < X ; ++j )
for ( k = 0 ; k < X ; ++k )
B[ii + X * jj + X * X * kk] = A[i + X * j + X * X * k];
}
int main()
{
const int N = 2;
int A[N*N*N], B[N*N*N];
int n{0};
for ( int a = 0 ; a < N*N*N; ++a )
A[a] = n++;
fillA2B<int, N>(A, B, 1, 2, 3);
fillA2B<int, N>(A, B, 2, 3, 1);
fillA2B<int, N>(A, B, 3, 1, 2);
return 0;
}
764デフォルトの名無しさん (ワッチョイ 8a9f-PvnN)
2017/09/23(土) 22:38:24.75ID:cFmXNXGU0 左辺が j, k ,i 右辺が i, j, k のようだが
765デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/23(土) 22:45:31.08ID:dWsmcDp10 あ、一気に全要素にFillしなくてもいいのかな?
766デフォルトの名無しさん (ワッチョイ 0af0-PvnN)
2017/09/24(日) 00:03:03.61ID:7FyCscw80 ……素直に3次元の配列にすりゃあいいんじゃねえのかなコレ
どーーーしても1次元にしなきゃいけない重大な理由が背後に控えてんのかな?
どーーーしても1次元にしなきゃいけない重大な理由が背後に控えてんのかな?
767デフォルトの名無しさん (スッップ Sdaa-pgy8)
2017/09/24(日) 00:08:42.25ID:xnpjieyid 普通にメモリ確保したら1次元だからな
768デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 00:21:25.13ID:J5lzydll0 B[ii][jj][kk] = A[i][j][k];
でも通るな
でも通るな
769デフォルトの名無しさん (KR 0Hc2-GWmJ)
2017/09/24(日) 00:25:12.68ID:QX+6yKIgH770デフォルトの名無しさん (ワッチョイ 8a4b-nCCx)
2017/09/24(日) 02:35:34.07ID:0uAENq5F0771デフォルトの名無しさん (オッペケ Sra3-GWmJ)
2017/09/24(日) 17:29:12.46ID:vw1eQBGxr772デフォルトの名無しさん (ワッチョイ 8e3d-GWmJ)
2017/09/25(月) 00:05:50.55ID:KE0eJu6Z0 C++とほとんど関係ないな
773デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/25(月) 10:20:39.11ID:c/fcx1bx0 任意個数の引数って、まさか省略記号と可変個数実引数では・・・
と思ったらモロじゃねえか おいおい
このスレ的にはinitializer_listやtemplate parameter packだろ
と思ったらモロじゃねえか おいおい
このスレ的にはinitializer_listやtemplate parameter packだろ
774デフォルトの名無しさん (スップ Sd4a-6FY3)
2017/09/25(月) 11:38:31.09ID:VZWzPiEFd775デフォルトの名無しさん (ワンミングク MMfa-l1yT)
2017/09/25(月) 12:51:53.80ID:ML1gBCAMM >>774
同じ
同じ
776デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/25(月) 16:12:14.99ID:b+XdOI/H0 >>773
ほっといたっていずれ覚えるだろうに何故押し付けるのか
ほっといたっていずれ覚えるだろうに何故押し付けるのか
777デフォルトの名無しさん (ドコグロ MMaa-ve9A)
2017/09/25(月) 17:17:22.88ID:RnBeI/QIM778デフォルトの名無しさん (オッペケ Sra3-25Bv)
2017/09/25(月) 18:34:40.87ID:iFpSSPyJr >>774
違う
違う
779デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/26(火) 10:35:57.85ID:DAuKDJeY0780デフォルトの名無しさん (ワッチョイ eb11-Nrqi)
2017/09/26(火) 11:02:34.83ID:XbrOuhiT0781デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:38:28.30ID:XSwUFkBD0 つかぬことを伺いますが、
あるクラス内で定義した構造体を同クラス内でstatic constメンバとして宣言し、
外部で定義しようとしたところ、「〜との互換性がありません」と出て上手く行きません
どうすればよいのでしょうか
〜ヘッダ内
class Hage{
public:
struct A{
int a;
int b;
};
static const struct A M;
}
〜ソース内
#include "ヘッダ"
const struct A Hage::M; //不正
あるクラス内で定義した構造体を同クラス内でstatic constメンバとして宣言し、
外部で定義しようとしたところ、「〜との互換性がありません」と出て上手く行きません
どうすればよいのでしょうか
〜ヘッダ内
class Hage{
public:
struct A{
int a;
int b;
};
static const struct A M;
}
〜ソース内
#include "ヘッダ"
const struct A Hage::M; //不正
782デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:39:54.54ID:XSwUFkBD0 あ、行頭の半角スペース消されるの忘れてた
783デフォルトの名無しさん (ワッチョイ eb11-Nrqi)
2017/09/26(火) 11:48:05.08ID:XbrOuhiT0 const struct Hage::A Hage::M;
784デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/26(火) 11:48:55.33ID:r3ztyMSNd785デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:51:53.92ID:XSwUFkBD0 うわあ何でこんな初歩的なことに躓いていたんだアホらしい
>>783-784サンクス
>>783-784サンクス
786デフォルトの名無しさん (ワッチョイ d311-Dc1X)
2017/09/26(火) 15:18:58.40ID:SDiSqFpw0 ###HUM###
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END
787デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/26(火) 15:24:00.47ID:DAuKDJeY0788デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/26(火) 16:32:49.03ID:XbrOuhiT0 >>787
まずはsageることから覚えような
まずはsageることから覚えような
789デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/26(火) 16:36:37.77ID:r3ztyMSNd >>773の「モロじゃねえか」がどっから出てきてるのか謎だ
790デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/26(火) 17:08:16.18ID:XbrOuhiT0 多分Cの可変長引数なら右端以外にも書けると思ってんじゃないかな
791デフォルトの名無しさん (ワッチョイ 0f23-hoCt)
2017/09/26(火) 18:55:18.16ID:DXd+nok20 こんなイメージかな?
#define X (100)
#define f(a,b,c,d,e) ((b)[(c)+X*(d)+X*X*(e)] = (a)[(e)+X*(c)+X*X*(d)])
#define X (100)
#define f(a,b,c,d,e) ((b)[(c)+X*(d)+X*X*(e)] = (a)[(e)+X*(c)+X*X*(d)])
792デフォルトの名無しさん (オッペケ Sra3-t5bw)
2017/09/26(火) 19:31:39.64ID:T9NefDHyr >const struct A Hage::M; //不正
初歩的でなく相当に高度な気がしてならない
規格の3.4.1/p7,p8,p14あたりを頭に入れていないといけない
「class NS::C;」のように何でも「::」を付ければ良いと言うわけでもないので
初歩的でなく相当に高度な気がしてならない
規格の3.4.1/p7,p8,p14あたりを頭に入れていないといけない
「class NS::C;」のように何でも「::」を付ければ良いと言うわけでもないので
793デフォルトの名無しさん (ワッチョイ 1e7a-Gpzj)
2017/09/26(火) 22:59:17.35ID:pvKSJMRt0 そうでもない
794デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/26(火) 23:10:02.38ID:28pSalnA0 だってグローバルスコープにも struct A; が存在したらどうなるか?
って考えればすぐわかりそうなモノじゃんね
って考えればすぐわかりそうなモノじゃんね
795デフォルトの名無しさん (ワッチョイ faa6-t5bw)
2017/09/26(火) 23:33:07.57ID:QYZ1C1Pk0 グローバルが優先される所と、グローバルよりクラスや名前空間が優先される所が入り乱れたこの言語で
どちらが優先なのかを正確に覚えてるのはかなりの変人である可能性が高い
https://ideone.com/RZTBk7
どちらが優先なのかを正確に覚えてるのはかなりの変人である可能性が高い
https://ideone.com/RZTBk7
796デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/26(火) 23:48:01.42ID:piJXswiP0 グローバルが優先するところなんてあったか?
797デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/26(火) 23:48:58.27ID:28pSalnA0798デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 00:14:02.46ID:LyDwKMB00799デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/27(水) 00:41:37.58ID:lz0JexH90800デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 00:57:18.03ID:LyDwKMB00 だからって770の大ボケを正当化する法はあんめえ
801デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/27(水) 07:53:47.82ID:Ep3hxvTm0 あんめえ
802デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/27(水) 09:12:11.59ID:nsBNhogE0 >>800
お前まだ分からんのか・・・
>>770のどこが大ボケなんだよ
添え字演算子の中で二項演算子の後に省略記号書いて再帰的に計算させたり
パラメータパック(またはそれを含む式)も無しに引数の左端にいきなり省略記号書いたり
なんてのはCでもC++でも出来ないの
お前みたいにCの可変長引数もvariadic templateも分かってるつもりなら
>>770を見た瞬間にこれは文面上の省略であって動くコードではないと一瞬でわかるはずなんだよ
質問でもないのにageまくるわ自分も初心者のくせして同じ初心者(あるいはそれ以上)を聞きかじりの知識でバカにしようとするわ
憂さ晴らしにしか利用しないのなら出ていけ
お前まだ分からんのか・・・
>>770のどこが大ボケなんだよ
添え字演算子の中で二項演算子の後に省略記号書いて再帰的に計算させたり
パラメータパック(またはそれを含む式)も無しに引数の左端にいきなり省略記号書いたり
なんてのはCでもC++でも出来ないの
お前みたいにCの可変長引数もvariadic templateも分かってるつもりなら
>>770を見た瞬間にこれは文面上の省略であって動くコードではないと一瞬でわかるはずなんだよ
質問でもないのにageまくるわ自分も初心者のくせして同じ初心者(あるいはそれ以上)を聞きかじりの知識でバカにしようとするわ
憂さ晴らしにしか利用しないのなら出ていけ
803デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 09:30:35.39ID:LyDwKMB00 文面上の省略だっておw
大ボケに苦しい言い訳を上塗りして
アフォから超アフォに進化したなあ
大ボケに苦しい言い訳を上塗りして
アフォから超アフォに進化したなあ
804デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/27(水) 09:41:27.37ID:nsBNhogE0 俺>>770じゃないよw
805デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 10:03:04.41ID:LyDwKMB00 どう見ても770だな
必死さの理由が他にない
必死さの理由が他にない
806デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/27(水) 10:19:41.03ID:Ls/Jbx6+0 ワッチョイも知らないアホじゃん
807デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 11:12:43.27ID:LyDwKMB00 驚いた、ム板にIP信者がいるとはね
嘆かわしい限りだ
嘆かわしい限りだ
808デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/27(水) 11:41:32.93ID:/eBNIii1d809デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/27(水) 11:42:15.16ID:/eBNIii1d >>808
間違えた、逆だ
間違えた、逆だ
810デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/27(水) 14:47:33.57ID:LyDwKMB00 大ボケ+言い訳+IP信者+錯乱
この安定したアフォぶりは、どう見ても同一人物だなw
この安定したアフォぶりは、どう見ても同一人物だなw
811デフォルトの名無しさん (ワッチョイ 1511-Txnz)
2017/09/29(金) 01:30:30.30ID:ppl3WHHK0 %%%3%%%
000-DOK<NAZE-0.8112162>
001-3800%\73NMB/1,81,2,NB"IKKI"%
002-91.81%ML7"8.122231746668193,43@ML.4@"%^23.1444
003-1.33321444718%"YLD""SO"%{71.%{62.1339816{331.422231765%<<<NL6
004-LOOP%Go To"000"%
VCL
000-DOK<NAZE-0.8112162>
001-3800%\73NMB/1,81,2,NB"IKKI"%
002-91.81%ML7"8.122231746668193,43@ML.4@"%^23.1444
003-1.33321444718%"YLD""SO"%{71.%{62.1339816{331.422231765%<<<NL6
004-LOOP%Go To"000"%
VCL
812デフォルトの名無しさん (ワッチョイ 6dcd-5mw5)
2017/09/29(金) 22:15:16.68ID:7WUGaaf40 javaやc#しかやったことないような人間がc++でもメモリ管理をきちんと身につけるには何から始めるのが手っ取り早いでしょう?
813デフォルトの名無しさん (ワッチョイ 6dcd-5mw5)
2017/09/29(金) 23:55:16.07ID:7WUGaaf40 そもそもみんなc++で何してるの?🤔
814デフォルトの名無しさん (ワッチョイ 03af-NUeZ)
2017/09/30(土) 00:49:06.72ID:Yf3yOiqk0 人工知能ゥ・・・
815はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b15-Txnz)
2017/09/30(土) 00:56:27.58ID:H54Xn+Px0816デフォルトの名無しさん (ワッチョイ c523-IQJU)
2017/09/30(土) 01:18:37.51ID:bL0j7tMv0817デフォルトの名無しさん (ワッチョイ 234c-Txnz)
2017/09/30(土) 01:39:01.97ID:zjlhf9G/0 VisualStudioでMFCのSDIテンプレートを作ると、ドキュメントクラス、ビュークラス、アプリケーションクラス、メインフレームクラスができますが、
これらのポインタを初期化時にグローバル化しておいて、以後あらゆるクラスから気軽にアクセスできるようにしとくのは良くないんでしょうか?
グローバル変数はあまり使うべきではないという考えは置いておくとして、動作上問題は起こるのでしょうか?
これらのポインタを初期化時にグローバル化しておいて、以後あらゆるクラスから気軽にアクセスできるようにしとくのは良くないんでしょうか?
グローバル変数はあまり使うべきではないという考えは置いておくとして、動作上問題は起こるのでしょうか?
818デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/09/30(土) 09:54:39.91ID:1M7A4t/A0 まあたまには口ですることもあるかな…
819デフォルトの名無しさん (スッップ Sd43-vp8x)
2017/09/30(土) 16:24:19.18ID:EIEZdyCfd 問題が起こらないように作れば起こらない
としか言えない
としか言えない
820デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 00:09:52.37ID:A+1idbvt0 MFCのtheAppには100万回ぶち切れてきたけど動作上は特に問題は無い
821デフォルトの名無しさん (ワッチョイ 4b1c-HyX/)
2017/10/01(日) 04:08:21.65ID:EFR2vscz0 あーこの人、こうやっちゃったんだ(ニヤニヤ
しながら使うもの
ARM C++ベースなんで同情するところもあるけどね
しながら使うもの
ARM C++ベースなんで同情するところもあるけどね
822デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 11:18:29.65ID:coFT7XLp0 グローバル変数だからといって頭ごなしにぶち切れるのもいかがなものか…
CPU視点でやるべきことに対して処理順序にあいまいさが生じないなら実行上問題無いし、
プログラマーの視点で管理できる個数なら実用上も問題無い
同一クラスの複数インスタンスが欲しければグローバルな配列にしたらやり過ごせる
ていうか仮にtheAppを根とする木構造で全てのデータを管理することを思い立ったとして、
その木の根付近をぶち切って得た2〜3の大枝をグローバル変数を根とするそれぞれ別の木にする、ぐらいの
挿し木設計は設計上のショートカットとして許されるべきや
というのは、プログラムのあらゆる箇所で
theApp()->getMemberA()->getMemberAA()->getMemberAAA()->...->getMemberZZ()->getValue()
と書かねばならなかったものが、
g_dataAA->...->getMemberZZ()->getValue()
ぐらいで済む
CPU視点でやるべきことに対して処理順序にあいまいさが生じないなら実行上問題無いし、
プログラマーの視点で管理できる個数なら実用上も問題無い
同一クラスの複数インスタンスが欲しければグローバルな配列にしたらやり過ごせる
ていうか仮にtheAppを根とする木構造で全てのデータを管理することを思い立ったとして、
その木の根付近をぶち切って得た2〜3の大枝をグローバル変数を根とするそれぞれ別の木にする、ぐらいの
挿し木設計は設計上のショートカットとして許されるべきや
というのは、プログラムのあらゆる箇所で
theApp()->getMemberA()->getMemberAA()->getMemberAAA()->...->getMemberZZ()->getValue()
と書かねばならなかったものが、
g_dataAA->...->getMemberZZ()->getValue()
ぐらいで済む
823デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 12:31:41.44ID:A+1idbvt0 平気でグローバル変数を使う奴はtheAppの混じったコードを使いまわし続けて大量にデータを持たせるようになる
そして結合しまくりのクラスを他のソフトにコピペしていつのまにか神theAppができある
マルチスレッドで読み書きしてるもんだから予想外のバグが起こる
上司はそれでそれが当たり前だと思ってるから同じようにしろと俺に命令する
俺切れる
そして結合しまくりのクラスを他のソフトにコピペしていつのまにか神theAppができある
マルチスレッドで読み書きしてるもんだから予想外のバグが起こる
上司はそれでそれが当たり前だと思ってるから同じようにしろと俺に命令する
俺切れる
824デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 12:47:25.61ID:coFT7XLp0 >マルチスレッドで読み書きしてるもんだから予想外のバグが起こる
これはグローバル変数でなくとも起きる設計なら起きるから別件
ていうか
>CPU視点でやるべきことに対して処理順序にあいまいさが生じ(>>822)
ているケースにあたる
非同期呼び出しの同期化は呼び出される側のクラスで解決すべき、というだけ
メソッド内で完結できれば最も安全
パホーマンスや処理の粒度の関係でそれが適さない場合は
トランザクション処理をちゃんと設計汁、
これはグローバル変数でなくとも起きる設計なら起きるから別件
ていうか
>CPU視点でやるべきことに対して処理順序にあいまいさが生じ(>>822)
ているケースにあたる
非同期呼び出しの同期化は呼び出される側のクラスで解決すべき、というだけ
メソッド内で完結できれば最も安全
パホーマンスや処理の粒度の関係でそれが適さない場合は
トランザクション処理をちゃんと設計汁、
825デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 12:50:48.09ID:+enXMbbO0 >>823
アプリケーションの中で寿命の長いデータはどこにどうやって置いてるの?
アプリケーションの中で寿命の長いデータはどこにどうやって置いてるの?
826デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 14:12:37.21ID:A+1idbvt0827デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 14:15:44.38ID:P+J8m3XL0 グローバル変数で同期とるんじゃないぞ。そんなもので同期なんて取れないからな。
ちゃんとOSが提供する同期オブジェクト使えよ。
ちゃんとOSが提供する同期オブジェクト使えよ。
828デフォルトの名無しさん (スップ Sd43-vp8x)
2017/10/01(日) 14:17:42.21ID:LFbo+6zld どんな環境でもOSがあってしっかりした同期の仕組みが有るとか思ってるお花畑がいると聞いて
829デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 14:25:15.04ID:P+J8m3XL0 いやはや無知で申し訳ない。
マルチスレッド機能があって同期の仕組みが提供されない処理系があるならばご教授して頂きたい。
マルチスレッド機能があって同期の仕組みが提供されない処理系があるならばご教授して頂きたい。
830デフォルトの名無しさん (ワッチョイ 456f-QuCJ)
2017/10/01(日) 14:59:48.84ID:8m985+fI0 文脈上Windowsでの話なのははっきりしてるのに「どんな環境でも」とか
831デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 15:20:08.45ID:+enXMbbO0832デフォルトの名無しさん (ワッチョイ 2311-KCdQ)
2017/10/01(日) 15:35:52.14ID:7TdPvZgo0 >>831
> 引数を渡す側がそのデータをどこにどうやって保持すればいいのか、という問題が残るだけでは?
再帰的にたどって行けばいいだけかと
プログラムの寿命とほぼ同じ寿命が必要ならmain( )で定義することになるだろうし
> 引数を渡す側がそのデータをどこにどうやって保持すればいいのか、という問題が残るだけでは?
再帰的にたどって行けばいいだけかと
プログラムの寿命とほぼ同じ寿命が必要ならmain( )で定義することになるだろうし
833デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 15:38:17.18ID:P+J8m3XL0 どうしてもグローバル的なものがほしいなら、グローバルにしてしまえよ。
アクセス用の関数だけしっかり同期処理書けばいい。
アクセス用の関数だけしっかり同期処理書けばいい。
834デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 15:41:47.38ID:coFT7XLp0 んまーマルチスレッド機能有りのOSであり
(1) OSがプリエンプトしてくるのを止めるAPIが無い
(2) ユーザープログラム独自に割り込み禁止命令を実行できない(特権命令違反でトラップされる
としたらユーザー側ではフラグのread modify writeのアトミック性を保証する術がまるきり無くなる
(1) OSがプリエンプトしてくるのを止めるAPIが無い
(2) ユーザープログラム独自に割り込み禁止命令を実行できない(特権命令違反でトラップされる
としたらユーザー側ではフラグのread modify writeのアトミック性を保証する術がまるきり無くなる
835デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 15:43:55.69ID:coFT7XLp0836デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 15:51:28.11ID:coFT7XLp0 しかしまあ同期処理はOSが提供すべき(理念としてだけでなく、その方が効率よく実現できるから
というのは同意
マルチスレッド機能があるOSなら必ずプリエンプトされないコード範囲を持つので、そこでなら
interlock系の命令を持たないZ-80みたいなCPUでも何も問題なくアトミックなread-modify-writeができる、
というのは同意
マルチスレッド機能があるOSなら必ずプリエンプトされないコード範囲を持つので、そこでなら
interlock系の命令を持たないZ-80みたいなCPUでも何も問題なくアトミックなread-modify-writeができる、
837デフォルトの名無しさん (ワッチョイ 2311-KCdQ)
2017/10/01(日) 15:52:05.08ID:7TdPvZgo0 >>834-835
Compare-And-Swapとかの命令が特権命令になってるプロセッサなんてあるんだっけ?
Compare-And-Swapとかの命令が特権命令になってるプロセッサなんてあるんだっけ?
838デフォルトの名無しさん (ワッチョイ 23c5-+G6K)
2017/10/01(日) 15:59:29.84ID:coFT7XLp0839デフォルトの名無しさん (ワッチョイ cbdb-IQJU)
2017/10/01(日) 16:05:24.82ID:a+6SxdIf0 atomicなread及びwriteが使えるならmutexを構成できるし、それを利用すればread modify writeも可能だよ。
840デフォルトの名無しさん (ブーイモ MM09-7+n4)
2017/10/01(日) 17:15:48.85ID:zBOS+jx9M ミューテックスが何だって?
くだらねえ話しやがって・・
くだらねえ話しやがって・・
841デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 17:18:14.77ID:A+1idbvt0 >>831
どんどん上にたどっていく
そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
externした変数はそのクラスが所有権を持っていることと同等なので、パフォーマンス上の都合が無ければ極力共有は避けるべき
あとコードを使いまわすときにも障害になる
ファイルにまとめて他でincludeしてもそのまま使えない
どんどん上にたどっていく
そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
externした変数はそのクラスが所有権を持っていることと同等なので、パフォーマンス上の都合が無ければ極力共有は避けるべき
あとコードを使いまわすときにも障害になる
ファイルにまとめて他でincludeしてもそのまま使えない
842デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 17:46:49.19ID:+enXMbbO0 >>841
>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
クラスが持つっていうのはそのクラスのスタティックメンバにしろという意味?
それでは結局グローバル変数とか無名namespace内変数とあまり変わらないような気がする。
>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
クラスが持つっていうのはそのクラスのスタティックメンバにしろという意味?
それでは結局グローバル変数とか無名namespace内変数とあまり変わらないような気がする。
843デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 18:21:24.53ID:A+1idbvt0 >>842
言ってる意味がわからない
クラスA内クラスBとCを宣言して
B b;
C c;
c.set_data(b);
だとか
main関数内で
Dptr d_ptr = D::get_resource();
Eptr e_ptr = E::get_resource();
F f(d_ptr, e_ptr);
f.excute();
とかこんな風にする
言ってる意味がわからない
クラスA内クラスBとCを宣言して
B b;
C c;
c.set_data(b);
だとか
main関数内で
Dptr d_ptr = D::get_resource();
Eptr e_ptr = E::get_resource();
F f(d_ptr, e_ptr);
f.excute();
とかこんな風にする
844デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 18:30:22.24ID:+enXMbbO0 >>843
んー
>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
「あるいは」ってどういう意味?
main関数内に持つ方はわかるんですよ。
そうでなく、「クラスが保持」の方の解説をお願いしたい。ずっと保持し続けるんだから
スタティックメンバなのかな?と思った。
んー
>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
「あるいは」ってどういう意味?
main関数内に持つ方はわかるんですよ。
そうでなく、「クラスが保持」の方の解説をお願いしたい。ずっと保持し続けるんだから
スタティックメンバなのかな?と思った。
845817 (ワッチョイ 234c-Txnz)
2017/10/01(日) 18:34:27.58ID:SWvA/SVx0 >>820
では、例えば初期化時にtheApp内に、Doc、View、MainFrmクラスのポインタをメンバに持たせておいて、
以降、あらゆるクラスからtheAppを介してアクセスしてもよいということですね。
こういったやり方でふとよぎった不安なんですが、
長時間アプリを起動していたとき、とあるクラスの参照ポインタがいつのまにか変わっていて、
例えばビュークラスを取得しようと「theApp.GetView()」としたときにはすでにそこにViewクラスはいない。。。なんてことは起こりませんか?
では、例えば初期化時にtheApp内に、Doc、View、MainFrmクラスのポインタをメンバに持たせておいて、
以降、あらゆるクラスからtheAppを介してアクセスしてもよいということですね。
こういったやり方でふとよぎった不安なんですが、
長時間アプリを起動していたとき、とあるクラスの参照ポインタがいつのまにか変わっていて、
例えばビュークラスを取得しようと「theApp.GetView()」としたときにはすでにそこにViewクラスはいない。。。なんてことは起こりませんか?
846デフォルトの名無しさん (ワッチョイ 6389-Vnaa)
2017/10/01(日) 19:04:09.96ID:c8q3kohq0 >>845
起こらないように設計する。
起こらないように設計する。
847デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 19:06:45.42ID:A+1idbvt0848デフォルトの名無しさん (ワッチョイ 456f-50d/)
2017/10/01(日) 19:24:06.85ID:8m985+fI0 「クラスの寿命」とかもう難しすぎてついていけんわ
849デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 19:38:58.01ID:A+1idbvt0850デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 19:42:13.70ID:+enXMbbO0 うん、寿命の長いオブジェクトをどうやって保持し続けるかっていう話なのにね
851デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 19:51:59.11ID:P+J8m3XL0 悩む理由がよく分からないが。適当な管理クラス作ればいいだけでは。
852デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 19:54:30.69ID:+enXMbbO0 >>849
寿命の長いオブジェクトをどうやって保持し続けるかがテーマなので、
「a というデータはクラスBのオブジェクトbに持たせればいい」では
じゃあそのbはどこにどうやって保持し続けるのかという無限後退に陥る。
普通のグローバル変数やシングルトン
theAppにぶら下げるの
mainの中に置く
一長一短あるのでそれ以外に何かないかなという話
寿命の長いオブジェクトをどうやって保持し続けるかがテーマなので、
「a というデータはクラスBのオブジェクトbに持たせればいい」では
じゃあそのbはどこにどうやって保持し続けるのかという無限後退に陥る。
普通のグローバル変数やシングルトン
theAppにぶら下げるの
mainの中に置く
一長一短あるのでそれ以外に何かないかなという話
853デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 20:03:44.13ID:P+J8m3XL0 別に永続化、シリアライズの話までしてないわけでしょ。
mainかグローバルの2択で推奨はmain、どのスコープからも見えてアクセスしたいならグローバルもありで終わりでしょ。
mainかグローバルの2択で推奨はmain、どのスコープからも見えてアクセスしたいならグローバルもありで終わりでしょ。
854デフォルトの名無しさん (ワッチョイ 23aa-Txnz)
2017/10/01(日) 20:06:34.68ID:+enXMbbO0855デフォルトの名無しさん (ワッチョイ ed4d-IQJU)
2017/10/01(日) 20:15:10.00ID:P+J8m3XL0 MFC? H社のソフトのことかな?
856デフォルトの名無しさん (ワッチョイ 234c-Txnz)
2017/10/01(日) 22:22:01.91ID:SWvA/SVx0 >>846
>>もちろん参照元からは参照先の実態があることが保障されないのでよくある
ソースコードで意図的にdeleteとか、アドレス移動する命令をいれてなくても起こるんですか?
(ガベージコレクションみたいなことが)
>>もちろん参照元からは参照先の実態があることが保障されないのでよくある
ソースコードで意図的にdeleteとか、アドレス移動する命令をいれてなくても起こるんですか?
(ガベージコレクションみたいなことが)
857デフォルトの名無しさん (スップ Sd43-vp8x)
2017/10/01(日) 22:50:35.76ID:LFbo+6zld858デフォルトの名無しさん (スップ Sd43-vp8x)
2017/10/01(日) 22:54:38.73ID:LFbo+6zld859デフォルトの名無しさん (スップ Sd43-vp8x)
2017/10/01(日) 23:00:12.89ID:LFbo+6zld860デフォルトの名無しさん (ワッチョイ 032e-asy+)
2017/10/01(日) 23:08:17.57ID:A+1idbvt0 >>856
起こるわけないが
起こるわけないが
861デフォルトの名無しさん (スップ Sd43-vp8x)
2017/10/01(日) 23:28:49.53ID:LFbo+6zld 意図的じゃないdelete
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- 【日銀総裁】賃金に上昇圧力 人手不足で労働市場逼迫 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 高市早苗「竹島は日本領土」 [834922174]
- ヤフコメで「共感した」が千や万いくのってやっぱり一体感を感じて気持ちいいの? [998357762]
- 俺は人間国宝
- この国がこんなにボロボロになった考えられる原因て何? [605029151]
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 🏡
