次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
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
探検
C++相談室 part139
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f65b-zn+7)
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0573デフォルトの名無しさん (ワッチョイ 6107-1cCS)
2018/12/06(木) 07:30:52.06ID:OnZIks560 日記帳
574デフォルトの名無しさん (ワントンキン MMd3-016C)
2018/12/06(木) 10:06:21.52ID:ijJePQDkM ZDDかお姉さん問題でggr
575デフォルトの名無しさん (JP 0Hdd-FsKt)
2018/12/06(木) 23:01:59.32ID:CWnIHGMVH vector A に vector B を部分代入することってできないの?
つまり、代入後は vector B が vector A の部分vectorになっててほしい
つまり、代入後は vector B が vector A の部分vectorになっててほしい
576さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/06(木) 23:06:11.56ID:7A1Pu7RI0 insert
577デフォルトの名無しさん (ワッチョイ 13a2-n9Ol)
2018/12/07(金) 02:03:39.38ID:vYfFg2B+0 std::copyでどう?
578デフォルトの名無しさん (ワッチョイ 497b-Po2/)
2018/12/07(金) 02:14:13.85ID:MQVHpO7o0 部分vectorって言ってるから、Bを参照扱いで挿入出来ないかってことじゃないの?
Bを書き換えたらAにも反映されるみたいな。
まぁ、vectorじゃ構造上無理なんだけど。
Bを書き換えたらAにも反映されるみたいな。
まぁ、vectorじゃ構造上無理なんだけど。
579デフォルトの名無しさん (ワッチョイ 0123-GoBb)
2018/12/07(金) 14:42:20.03ID:lkrG/qbb0 slice
>>572
>N×N のテーブルを N 種類の値同士の演算結果と考えてその演算結果が群の性質を満たすパターンだけを取り出す
すごく興味がありますね…
準同型を検出するのが難しそうですが、ガウス吐き出し法で同一解(ただす解を小さいもの順に並べなおす)を弾くようにするだけでなんとかなりますか?
ググッてみると、位数12 の群のひとつは、巡回群でも巡回群の直積でもない、これより低位には現れなかった新たなパターン、らしいのです、これはどんな群なのか具体的に知りたいものです
>N×N のテーブルを N 種類の値同士の演算結果と考えてその演算結果が群の性質を満たすパターンだけを取り出す
すごく興味がありますね…
準同型を検出するのが難しそうですが、ガウス吐き出し法で同一解(ただす解を小さいもの順に並べなおす)を弾くようにするだけでなんとかなりますか?
ググッてみると、位数12 の群のひとつは、巡回群でも巡回群の直積でもない、これより低位には現れなかった新たなパターン、らしいのです、これはどんな群なのか具体的に知りたいものです
581デフォルトの名無しさん (ワッチョイ 2be8-5wwv)
2018/12/08(土) 08:26:12.03ID:qW/ttJcB0 >>580
とうほぐの人?
とうほぐの人?
582デフォルトの名無しさん (ワッチョイ f9c3-+0bq)
2018/12/08(土) 08:34:46.70ID:Cv6IL/oI0 小さい群ならいいだろうけど、散在型単純群が出てくるサイズになっても対応できるかな
583デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/08(土) 13:35:08.63ID:cc77YSwU0 using FUNC = std::function<void(Params&)>;
struct Params {};
template<> std::tuple<> convert_params(const Params&) { return {}; }
template<> std::tuple<int> convert_params(Params& p) { return 0; }
template<typename... Args>
inline static auto message_handler(void(*func)(Args...))
{ return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; }
template<typename... Args>
inline static auto message_handler(std::function<void(Args...)> func)
{ return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; }
template<typename T, typename... Args>
inline static auto message_handler(void(T::*func)(Args...), T* obj)
{
assert(obj != nullptr);
return [=](Params& m)
{
std::apply(func,
std::tuple_cat(
std::tuple<T&>(*obj),
convert_params<std::tuple<Args...>>(p))
);
};
}
struct Params {};
template<> std::tuple<> convert_params(const Params&) { return {}; }
template<> std::tuple<int> convert_params(Params& p) { return 0; }
template<typename... Args>
inline static auto message_handler(void(*func)(Args...))
{ return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; }
template<typename... Args>
inline static auto message_handler(std::function<void(Args...)> func)
{ return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; }
template<typename T, typename... Args>
inline static auto message_handler(void(T::*func)(Args...), T* obj)
{
assert(obj != nullptr);
return [=](Params& m)
{
std::apply(func,
std::tuple_cat(
std::tuple<T&>(*obj),
convert_params<std::tuple<Args...>>(p))
);
};
}
584デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/08(土) 13:35:36.54ID:cc77YSwU0 ↑の続き
前の投稿で定義した関数を使い、下記の通りに呼び出そうとしているのですが
std::functionを通さずにラムダ直で呼び出した場合に、なんとなく上手にやってくれる
方法がどうしても思いつけません。何か手はないでしょうか?
1 void myfunction(int);
FUNC func = message_handler(myfunction); // OK グローバル関数
2 void myclass::myfunction(int);
FUNC func = message_handler(myfunction, this); // OK メンバ関数
3 FUNC func = message_handler([](int){}); // NG ラムダ直
4 std::function<void(int)> myfunction = [](int){};
FUNC func = message_handler(myfunction); // OK std::function
前の投稿で定義した関数を使い、下記の通りに呼び出そうとしているのですが
std::functionを通さずにラムダ直で呼び出した場合に、なんとなく上手にやってくれる
方法がどうしても思いつけません。何か手はないでしょうか?
1 void myfunction(int);
FUNC func = message_handler(myfunction); // OK グローバル関数
2 void myclass::myfunction(int);
FUNC func = message_handler(myfunction, this); // OK メンバ関数
3 FUNC func = message_handler([](int){}); // NG ラムダ直
4 std::function<void(int)> myfunction = [](int){};
FUNC func = message_handler(myfunction); // OK std::function
585デフォルトの名無しさん (ワッチョイ 2beb-xqdQ)
2018/12/08(土) 13:43:44.31ID:7QrgfN7v0 頭に+つけると上手くいくと思う
FUNC func = message_handler(+[](int){});
FUNC func = message_handler(+[](int){});
586デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/08(土) 14:25:14.54ID:cc77YSwU0587デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/08(土) 14:29:45.48ID:cc77YSwU0 すみません、お礼を言い忘れています。
ありがとうございます。
ありがとうございます。
588デフォルトの名無しさん (ワッチョイ 2beb-xqdQ)
2018/12/08(土) 14:59:08.12ID:7QrgfN7v0589デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/09(日) 14:22:21.02ID:xJ41Kt/M0 突然すまんが、
winnt.h の中に次のような構造体定義があって、外部では、構造体タグ名
_RTL_CRITICAL_SECTION が不完全定義すらもされないで、
_RTL_CRITICAL_SECTION_DEBUG の中でポインタのために使用されている。
仮にこれで、「内部クラス」扱いにならないのだとすれば、
逆に、「内部クラス」を使いたい場合、もし完全定義を与える前に、
不完全なままポインタのために使いたい場合は、どうしたらいいのだろう?
typedef struct _RTL_CRITICAL_SECTION_DEBUG {
WORD Type;
WORD CreatorBackTraceIndex;
struct _RTL_CRITICAL_SECTION *CriticalSection;
LIST_ENTRY ProcessLocksList;
DWORD EntryCount;
DWORD ContentionCount;
DWORD Spare[2];
} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
typedef struct _RTL_CRITICAL_SECTION {
PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
LONG LockCount;
LONG RecursionCount;
HANDLE OwningThread;
HANDLE LockSemaphore;
DWORD Reserved;
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
winnt.h の中に次のような構造体定義があって、外部では、構造体タグ名
_RTL_CRITICAL_SECTION が不完全定義すらもされないで、
_RTL_CRITICAL_SECTION_DEBUG の中でポインタのために使用されている。
仮にこれで、「内部クラス」扱いにならないのだとすれば、
逆に、「内部クラス」を使いたい場合、もし完全定義を与える前に、
不完全なままポインタのために使いたい場合は、どうしたらいいのだろう?
typedef struct _RTL_CRITICAL_SECTION_DEBUG {
WORD Type;
WORD CreatorBackTraceIndex;
struct _RTL_CRITICAL_SECTION *CriticalSection;
LIST_ENTRY ProcessLocksList;
DWORD EntryCount;
DWORD ContentionCount;
DWORD Spare[2];
} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
typedef struct _RTL_CRITICAL_SECTION {
PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
LONG LockCount;
LONG RecursionCount;
HANDLE OwningThread;
HANDLE LockSemaphore;
DWORD Reserved;
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
590デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/09(日) 14:26:38.84ID:xJ41Kt/M0 確か、構造体タグ名は、ブロックに名前空間があって、C と C++ で仕様がごちゃごちゃしていた
気がした。
確か、既に定義がある場合は、それが定義された段階の名前空間を使うが、
完全に新規に定義する場合は、最も内側のブロックの名前空間に登録される、という
感じだった気がしたんだけど。
一度も外部では定義も宣言もしなかった場合、最も内側のブロックの名前空間に登録されるの
だとすれば、クラスや構造体内部の内部クラスに関してもそれの応用になって・・・、と思うんだが、
少なくとも、旧来の C のヘッダファイルでは、その解釈ではまずいことになっている気がする。
気がした。
確か、既に定義がある場合は、それが定義された段階の名前空間を使うが、
完全に新規に定義する場合は、最も内側のブロックの名前空間に登録される、という
感じだった気がしたんだけど。
一度も外部では定義も宣言もしなかった場合、最も内側のブロックの名前空間に登録されるの
だとすれば、クラスや構造体内部の内部クラスに関してもそれの応用になって・・・、と思うんだが、
少なくとも、旧来の C のヘッダファイルでは、その解釈ではまずいことになっている気がする。
591デフォルトの名無しさん (アウウィフ FF05-GoBb)
2018/12/09(日) 14:59:08.32ID:rgDJoSoNF struct _RTL_CRITICAL_SECTION;
って行があるんじゃね
って行があるんじゃね
592デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/09(日) 15:15:39.34ID:LCYDMKL+0 不完全な型はそれを解決する必要があるときに完全な定義が得られればいいんで、
それがどこの名前空間に存在するかについてもそのときに解決できればよかったはず。
それがどこの名前空間に存在するかについてもそのときに解決できればよかったはず。
593デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/09(日) 17:56:05.02ID:xJ41Kt/M0 >>591
無い気がする。
さっき思ったんだけど、C++ の場合、winnt.h の大部分は、extern "C" {・・・} で囲まれて
パースされて、旧来の C の仕様のままになるので、内部クラスの概念が無いから
あれでいいのかも知れない???
無い気がする。
さっき思ったんだけど、C++ の場合、winnt.h の大部分は、extern "C" {・・・} で囲まれて
パースされて、旧来の C の仕様のままになるので、内部クラスの概念が無いから
あれでいいのかも知れない???
594デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/09(日) 18:15:26.56ID:xJ41Kt/M0 >>592
_XXX_DEBUG の方で、_RTL_CRITICAL_SECTION を _XXX_DEBUG の構造体に所属する
「内部クラス」 に解釈してしまった場合、外側の _RTL_CRITICAL_SECTION では、
タグ名としては同じ名前であっても、コンパイラにとっては全くの別の構造体に見なされて
しまうので、たとえば、ポインタを代入する際に、
「異なるポインタ型への代入がある」
などのエラーが出る可能性がある。
_XXX_DEBUG の方で、_RTL_CRITICAL_SECTION を _XXX_DEBUG の構造体に所属する
「内部クラス」 に解釈してしまった場合、外側の _RTL_CRITICAL_SECTION では、
タグ名としては同じ名前であっても、コンパイラにとっては全くの別の構造体に見なされて
しまうので、たとえば、ポインタを代入する際に、
「異なるポインタ型への代入がある」
などのエラーが出る可能性がある。
595はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-n9Ol)
2018/12/09(日) 18:24:17.47ID:hgaiHSHh0596デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/09(日) 18:24:29.50ID:LCYDMKL+0 ?
その「内部クラス」 の定義は存在しないんだから。
その「内部クラス」 の定義は存在しないんだから。
597デフォルトの名無しさん (ワンミングク MMd3-OBga)
2018/12/10(月) 11:35:19.25ID:z9e5AxLyM 何のための不完全型かと
型の中身を意識する必要はない
リンケージなんか関係ない
型の中身を意識する必要はない
リンケージなんか関係ない
598デフォルトの名無しさん (ワッチョイ 937c-1aIk)
2018/12/10(月) 13:10:56.95ID:Hs8Qkrq90 >>597
不完全定義でも、厳密にどの構造体かは区別されている。
不完全定義でも、厳密にどの構造体かは区別されている。
599デフォルトの名無しさん (ワッチョイ 73a5-n9Ol)
2018/12/10(月) 21:40:39.61ID:merQK3Z90 不完全型でいけそう
https://ideone.com/SFcGAQ
内部クラスと解釈はされないみたい(内部クラスと解釈されたらリンクリストで困るような)
https://ideone.com/DcYHNu
詳しい仕様は誰かプリーズ
https://ideone.com/SFcGAQ
内部クラスと解釈はされないみたい(内部クラスと解釈されたらリンクリストで困るような)
https://ideone.com/DcYHNu
詳しい仕様は誰かプリーズ
600デフォルトの名無しさん (ワッチョイ 937c-1aIk)
2018/12/10(月) 23:34:55.84ID:Hs8Qkrq90 >>599
>(内部クラスと解釈されたらリンクリストで困るような)
しかし、外部クラスと解釈される場合は、本当に内部クラスにしたい場合で、
それ自身が自己参照を持つリンクリストにしたいような場合に、逆に困る
事になるかも知れない。
>(内部クラスと解釈されたらリンクリストで困るような)
しかし、外部クラスと解釈される場合は、本当に内部クラスにしたい場合で、
それ自身が自己参照を持つリンクリストにしたいような場合に、逆に困る
事になるかも知れない。
601デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/10(月) 23:43:57.33ID:ba1HqxVH0 struct Bの定義は内と外両方同時に存在し得て、検索順で近い方に解釈されるというだけだろ。
何を心配してるのか。
何を心配してるのか。
602デフォルトの名無しさん (ワッチョイ 937c-1aIk)
2018/12/10(月) 23:48:43.81ID:Hs8Qkrq90 >>601
別の名前空間の構造体だと解釈されれば、ポインタの代入も出来ない。
別の名前空間の構造体だと解釈されれば、ポインタの代入も出来ない。
603デフォルトの名無しさん (ワッチョイ 9333-xqdQ)
2018/12/11(火) 01:46:14.52ID:sJmjlCIC0 >>589
このようにしたらいい。
struct _RTL_CRITICAL_SECTION;
struct _RTL_CRITICAL_SECTION *CriticalSection;
https://timsong-cpp.github.io/cppwp/n4659/basic.lookup.elab#2
https://timsong-cpp.github.io/cppwp/n4659/basic.scope.pdecl#7
このようにしたらいい。
struct _RTL_CRITICAL_SECTION;
struct _RTL_CRITICAL_SECTION *CriticalSection;
https://timsong-cpp.github.io/cppwp/n4659/basic.lookup.elab#2
https://timsong-cpp.github.io/cppwp/n4659/basic.scope.pdecl#7
604デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/11(火) 08:05:37.73ID:ULPnecUk0 >>602
1つのコンパイル単位内でそれはないだろ。
1つのコンパイル単位内でそれはないだろ。
605デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/11(火) 09:54:05.21ID:CMkzN/Tv0 >>589
変数の宣言をした時点で解決可能なクラスが使われるというしごく当たり前な結果に。
https://ideone.com/JyKDmi
https://ideone.com/gTeZlX
https://ideone.com/uPjViG
解決不可能だった場合は、一番近いnamespaceから選択される
https://ideone.com/LpC58v
変数の宣言をした時点で解決可能なクラスが使われるというしごく当たり前な結果に。
https://ideone.com/JyKDmi
https://ideone.com/gTeZlX
https://ideone.com/uPjViG
解決不可能だった場合は、一番近いnamespaceから選択される
https://ideone.com/LpC58v
606デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/11(火) 10:10:46.46ID:CMkzN/Tv0 >>605の一番近いnamespaceからというのは嘘でした
×https://ideone.com/LpC58v
正しくは、解決不可能だった場合は、同じ階層から選択されるみたい。
AとBがともにNS2に存在する場合
https://ideone.com/m5leMs
コンパイルエラー。 AがNS2 Bがひとつ外側のNS
https://ideone.com/9IY4BC
同階層にBがない場合、グローバルからも選択されることはない。
https://ideone.com/cMhwpW
×https://ideone.com/LpC58v
正しくは、解決不可能だった場合は、同じ階層から選択されるみたい。
AとBがともにNS2に存在する場合
https://ideone.com/m5leMs
コンパイルエラー。 AがNS2 Bがひとつ外側のNS
https://ideone.com/9IY4BC
同階層にBがない場合、グローバルからも選択されることはない。
https://ideone.com/cMhwpW
607デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/11(火) 10:13:00.28ID:CMkzN/Tv0608デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/11(火) 14:13:57.27ID:TeIOtXwo0 >>604
ある。
単に人間に見えているタグ名が同じというだけで、コンパイラ内部では、
全く別の識別番号(というより、通常、コンパイラ内部の構造体定義データの先頭アドレス)
になっており、タグ名が同じでも識別番号が異なれば、全く別物と扱われる場合がある。
ある。
単に人間に見えているタグ名が同じというだけで、コンパイラ内部では、
全く別の識別番号(というより、通常、コンパイラ内部の構造体定義データの先頭アドレス)
になっており、タグ名が同じでも識別番号が異なれば、全く別物と扱われる場合がある。
609デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/11(火) 15:07:44.16ID:TeIOtXwo0 >>603
ものすごい微妙な動きをするみたいだ・・・。
struct Base の定義を見てみると、外側に既に struct Data が定義されていても、
なぜか、Data は、「nested Data」すなわち、Baseの内部クラスの方を「参照」して
しまうらしい。規則性はどこにあるんだろう。まだ英文読んでないけど。
struct Node {
struct Node* Next; // OK: Refers to Node at global scope
struct Data* Data; // OK: Declares type Data
// at global scope and member Data
};
struct Data {
struct Node* Node; // OK: Refers to Node at global scope
friend struct ::Glob; // error: Glob is not declared, cannot introduce a qualified type ([dcl.type.elab])
friend struct Glob; // OK: Refers to (as yet) undeclared Glob at global scope.
/* ... */
};
struct Base {
struct Data; // OK: Declares nested Data
struct ::Data* thatData; // OK: Refers to ::Data
struct Base::Data* thisData; // OK: Refers to nested Data
friend class ::Data; // OK: global Data is a friend
friend class Data; // OK: nested Data is a friend
struct Data { /* ... */ }; // Defines nested Data
};
ものすごい微妙な動きをするみたいだ・・・。
struct Base の定義を見てみると、外側に既に struct Data が定義されていても、
なぜか、Data は、「nested Data」すなわち、Baseの内部クラスの方を「参照」して
しまうらしい。規則性はどこにあるんだろう。まだ英文読んでないけど。
struct Node {
struct Node* Next; // OK: Refers to Node at global scope
struct Data* Data; // OK: Declares type Data
// at global scope and member Data
};
struct Data {
struct Node* Node; // OK: Refers to Node at global scope
friend struct ::Glob; // error: Glob is not declared, cannot introduce a qualified type ([dcl.type.elab])
friend struct Glob; // OK: Refers to (as yet) undeclared Glob at global scope.
/* ... */
};
struct Base {
struct Data; // OK: Declares nested Data
struct ::Data* thatData; // OK: Refers to ::Data
struct Base::Data* thisData; // OK: Refers to nested Data
friend class ::Data; // OK: global Data is a friend
friend class Data; // OK: nested Data is a friend
struct Data { /* ... */ }; // Defines nested Data
};
610デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/11(火) 15:29:10.50ID:TeIOtXwo0 【違いの分析】
1. 外部クラスを参照したい場合の書き方:
struct Data {
struct Node* Node; // OK: Refers to Node at global scope
・・・
};
2. 内部クラスを参照したい場合の書き方:
struct Base {
struct Data; // OK: Declares nested Data
・・・
};
【考察】
後者の方は、「『宣言子』を「何にも書かずに」、ただ不完全定義として、
「struct Data」と書いている。こういう独特の特徴的な書き方で、
新しいタグ名の導入と見なされているのではないか。
一方、前者の方は、 「struct Node」だけではなく、「*Node」という「宣言子」を
書いてしまっているので、新しいタグ名の導入とは見なされない気がする。
先日書いた、CRITICAL なんたらの例では、宣言氏を書いていたので、「1」
の方の扱いとなり、外部クラスの参照と見なされた・・・。
1. 外部クラスを参照したい場合の書き方:
struct Data {
struct Node* Node; // OK: Refers to Node at global scope
・・・
};
2. 内部クラスを参照したい場合の書き方:
struct Base {
struct Data; // OK: Declares nested Data
・・・
};
【考察】
後者の方は、「『宣言子』を「何にも書かずに」、ただ不完全定義として、
「struct Data」と書いている。こういう独特の特徴的な書き方で、
新しいタグ名の導入と見なされているのではないか。
一方、前者の方は、 「struct Node」だけではなく、「*Node」という「宣言子」を
書いてしまっているので、新しいタグ名の導入とは見なされない気がする。
先日書いた、CRITICAL なんたらの例では、宣言氏を書いていたので、「1」
の方の扱いとなり、外部クラスの参照と見なされた・・・。
611はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-n9Ol)
2018/12/11(火) 15:34:19.91ID:pCenHJYt0 >>609
D&E の 6.3.1 にそのあたりの解説があるので読んでみると面白いかも。
「病的な例」を含めてわかりやすい解決ルールを作ろうと奮闘したあげくに
まあまあマシなルールとしてそうなったって感じ。
D&E の 6.3.1 にそのあたりの解説があるので読んでみると面白いかも。
「病的な例」を含めてわかりやすい解決ルールを作ろうと奮闘したあげくに
まあまあマシなルールとしてそうなったって感じ。
612デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/11(火) 17:25:37.23ID:TeIOtXwo0613デフォルトの名無しさん (ワッチョイ 2b80-Po2/)
2018/12/11(火) 22:53:03.48ID:yA4tg2d20 ぜんぜん違う
ポインタだからサイズが決定できることになる
ポインタなら前方宣言で前方参照できる
ポインタだからサイズが決定できることになる
ポインタなら前方宣言で前方参照できる
614デフォルトの名無しさん (ワッチョイ 93b3-eP6C)
2018/12/11(火) 22:54:56.40ID:essnCSQz0 2. のほうは構造体を宣言してるから、そこに新しく nested class が作られてる。
1. のほうは構造体へのポインタを宣言してるから、対応する構造体を探して外部の定義を見つけてる。
そんなに微妙でもないと思う。
1. のほうは構造体へのポインタを宣言してるから、対応する構造体を探して外部の定義を見つけてる。
そんなに微妙でもないと思う。
615デフォルトの名無しさん (ワッチョイ 2b80-Po2/)
2018/12/11(火) 22:59:45.95ID:yA4tg2d20 そもそもポインタでない場合、前方宣言でなくクラス(もしくは構造体)の宣言がないと
インスタンスのサイズが決定できないし
コンスタラクトタも呼び出せない
普通にコンパイルエラーになる
クラス(もしくは構造体)のメンバにアクセスする場合も同じく
前方宣言でなくクラス(もしくは構造体)の宣言がないと
メンバがわからない
普通にコンパイルエラーになる
インスタンスのサイズが決定できないし
コンスタラクトタも呼び出せない
普通にコンパイルエラーになる
クラス(もしくは構造体)のメンバにアクセスする場合も同じく
前方宣言でなくクラス(もしくは構造体)の宣言がないと
メンバがわからない
普通にコンパイルエラーになる
616デフォルトの名無しさん (ワッチョイ 2b80-Po2/)
2018/12/11(火) 23:02:27.89ID:yA4tg2d20 ポインタもしくは&の参照だけなら
前方参照だけで問題はない
マジで頭悪いシロウトしかいない
前方参照だけで問題はない
マジで頭悪いシロウトしかいない
617デフォルトの名無しさん (ワッチョイ f9c3-+0bq)
2018/12/11(火) 23:59:39.80ID:6HVoAQt60 おじいちゃん今はタグ名前空間の話でしょ
不完全型のポインタが完全型になる話なんか今更ドヤ顔でしても恥ずかしいだけだよ
不完全型のポインタが完全型になる話なんか今更ドヤ顔でしても恥ずかしいだけだよ
618デフォルトの名無しさん (ワッチョイ 2b80-Po2/)
2018/12/12(水) 00:09:55.89ID:1Fc61En10 また低学歴知恵遅れが的外れなこといってるし
低学歴知恵遅れってなんでこんな頭悪いん
頭悪いくせに頭悪いレスをする
低学歴知恵遅れってなんでこんな頭悪いん
頭悪いくせに頭悪いレスをする
619デフォルトの名無しさん (ワッチョイ 2b80-Po2/)
2018/12/12(水) 00:10:41.87ID:1Fc61En10 まず低学歴知恵遅れはC/C++言語の特性すらわかってない
620デフォルトの名無しさん (ワントンキン MMd3-OBga)
2018/12/12(水) 08:26:27.80ID:G3zhlg3lM 半角恥ずかしいな
さすが低学歴
さすが低学歴
621デフォルトの名無しさん (ワッチョイ d9e3-1aIk)
2018/12/12(水) 08:48:09.25ID:RRyKxOPE0 >>614
C/C++ では、ある1つの宣言で、ポインタ変数を定義する場合でも、それと同時に構造体の
宣言(定義)が行われる事がある。たとえば、
TYPE *ptr; は、ポインタ変数の ptr を定義しているが、TYPE の部分が
struct TPerson { ・・・ }
だった場合は、変数 ptr の定義と同時に、構造体 TPerson も定義する。
さらに、TYPE の部分が、
struct TPerson
であった場合も、不完全定義として構造体 TPerson を定義することがある。
実際、先に挙げた例では、1つの行で、全く始めて _RTL_CRITICAL_SECTION 構造体が
出てきて、その不完全定義と同時にその構造体へのポインタ型のメンバ変数を宣言
していた。
C/C++ では、ある1つの宣言で、ポインタ変数を定義する場合でも、それと同時に構造体の
宣言(定義)が行われる事がある。たとえば、
TYPE *ptr; は、ポインタ変数の ptr を定義しているが、TYPE の部分が
struct TPerson { ・・・ }
だった場合は、変数 ptr の定義と同時に、構造体 TPerson も定義する。
さらに、TYPE の部分が、
struct TPerson
であった場合も、不完全定義として構造体 TPerson を定義することがある。
実際、先に挙げた例では、1つの行で、全く始めて _RTL_CRITICAL_SECTION 構造体が
出てきて、その不完全定義と同時にその構造体へのポインタ型のメンバ変数を宣言
していた。
622デフォルトの名無しさん (ワッチョイ 93b3-eP6C)
2018/12/12(水) 21:29:50.61ID:6r+JK94x0 型が struct TPerson みたいに書かれてて、 TPerson の宣言が見つからない場合、そこで TPerson が前方宣言されたものとして扱われる。
この前方宣言は一番内側の namespace かブロックに所属する扱いになる。
要するに一部の前方宣言は省略できるってだけだよ。
この前方宣言は一番内側の namespace かブロックに所属する扱いになる。
要するに一部の前方宣言は省略できるってだけだよ。
623デフォルトの名無しさん (ワッチョイ 93bd-e/g/)
2018/12/12(水) 22:39:31.89ID:rtWaVZVk0624デフォルトの名無しさん (ワッチョイ 93bd-e/g/)
2018/12/12(水) 22:45:13.11ID:rtWaVZVk0625デフォルトの名無しさん (ワッチョイ 93bd-e/g/)
2018/12/12(水) 22:55:10.10ID:rtWaVZVk0 ていうかstruct Data;という構文には構造体の定義ブロックの外に書いたとき発動する存在意義が別にあるが
そちらは前方宣言と言って良いかも試練、
そちらは前方宣言と言って良いかも試練、
626デフォルトの名無しさん (ワッチョイ 93bd-e/g/)
2018/12/12(水) 23:07:33.30ID:rtWaVZVk0 こういうやつ↓↓↓
struct Data;
struct Foo {
struct Data* m_pData; // struct Fooはstruct Dataへのリンクを有する
/*....*/
};
struct Data {
struct Foo* m_pFoo; // Dataはstruct Fooへのリンクを有する
/*...*/
};
そもそもなんで型の名前やクラス名だけではなくて、タグ名なんてものが存在し続けているのかというと、
struct Data;というのがやりたかったから、およびその必要が(上のようなケースで)あったからに他ならない
struct Data;
struct Foo {
struct Data* m_pData; // struct Fooはstruct Dataへのリンクを有する
/*....*/
};
struct Data {
struct Foo* m_pFoo; // Dataはstruct Fooへのリンクを有する
/*...*/
};
そもそもなんで型の名前やクラス名だけではなくて、タグ名なんてものが存在し続けているのかというと、
struct Data;というのがやりたかったから、およびその必要が(上のようなケースで)あったからに他ならない
627デフォルトの名無しさん (ワッチョイ 899f-QT7o)
2018/12/12(水) 23:22:51.72ID:0D13QgVz0628デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/13(木) 00:40:06.98ID:6BRdw/E00629デフォルトの名無しさん (ワッチョイ 079f-Buu6)
2018/12/13(木) 00:47:56.23ID:fs9Sguzb0 struct Data* ptr;の記法が特殊な根拠
struct A {
struct Data* ptr; // as ::Data
struct A {
struct Data* ptr; // as ::Data
630デフォルトの名無しさん (ワッチョイ 079f-Buu6)
2018/12/13(木) 00:52:46.20ID:fs9Sguzb0 struct Data* ptr;の記法が特殊な根拠
struct A {
struct Data* ptr; // ::Data
};
struct A {
struct Data;
struct Data* ptr; // A::Data
};
前方宣言のあるなしで、解釈の変わるstruct Data* ptr;の記法はやっぱり特殊なんだと思うけど。
C++において、不完全な型という概念はあるけど、不完全な定義という概念はないのでは?
struct A {
struct Data* ptr; // ::Data
};
struct A {
struct Data;
struct Data* ptr; // A::Data
};
前方宣言のあるなしで、解釈の変わるstruct Data* ptr;の記法はやっぱり特殊なんだと思うけど。
C++において、不完全な型という概念はあるけど、不完全な定義という概念はないのでは?
631デフォルトの名無しさん (ワッチョイ 079f-Buu6)
2018/12/13(木) 00:59:11.60ID:fs9Sguzb0 struct A { struct Data* ptr; };
と記述した場合、そこからたどれる名前空間のどの階層であっても
事前に宣言または定義が行われていれば、その時点で特定可能なstruct Dataへのポインタと解釈されるけど、
解決不可能であった場合には、struct Aと同階層にあるstruct Dataとみなされる <- この動作が特殊
と記述した場合、そこからたどれる名前空間のどの階層であっても
事前に宣言または定義が行われていれば、その時点で特定可能なstruct Dataへのポインタと解釈されるけど、
解決不可能であった場合には、struct Aと同階層にあるstruct Dataとみなされる <- この動作が特殊
632デフォルトの名無しさん (ワッチョイ 8a34-kzSl)
2018/12/13(木) 01:06:53.33ID:RmgWred00 アタリマエじゃん
バカなのかな?
バカなのかな?
633デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/13(木) 01:25:06.35ID:6BRdw/E00 struct Bar;が前方宣言では「ない」という主張は撤回する
なぜなら、次のコードの(A)、(B)のコメントアウトを外しても
それ自体はエラーにならない(つまりstruct Bar; は同一スコープ内で重複が許される
このときは(D)でエラーになる
しかし、(A)と(B)をコメントアウトすると何のエラーにもならない
むしろstruct Bar* m_pBar; の方が普通に前方宣言的に働く(Fooのスコープに縛られない
#include <stdio.h>
struct Foo {
//struct Bar; // (A)
//struct Bar; // (B)
struct Bar* m_pBar; // (C)
};
struct Bar {
int x;
int y;
};
struct Bar* g_ptr;
int main()
{
Foo test;
test.m_pBar = g_ptr; // (D)
}
なぜなら、次のコードの(A)、(B)のコメントアウトを外しても
それ自体はエラーにならない(つまりstruct Bar; は同一スコープ内で重複が許される
このときは(D)でエラーになる
しかし、(A)と(B)をコメントアウトすると何のエラーにもならない
むしろstruct Bar* m_pBar; の方が普通に前方宣言的に働く(Fooのスコープに縛られない
#include <stdio.h>
struct Foo {
//struct Bar; // (A)
//struct Bar; // (B)
struct Bar* m_pBar; // (C)
};
struct Bar {
int x;
int y;
};
struct Bar* g_ptr;
int main()
{
Foo test;
test.m_pBar = g_ptr; // (D)
}
634デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/13(木) 01:32:49.21ID:6BRdw/E00 ちょっち訂正
△: struct Bar;が前方宣言では「ない」という主張
○: 構造体の定義ブロック内のstruct Bar;が前方宣言では「ない」という主張
で、struct Bar* m_pBar; の方が普通に前方宣言的に働く(スコープローカルな新たなタグBarを作ったりしない)のに --(1)
構造体の定義ブロック内のstruct Bar;は明らかにスコープローカルな新たなタグBarを作り出すという変態機能を有している --(2)
つまり(2)を指して一貫して前方宣言だと主張するなら、(1)のstruct Bar* m_pBar;も前方宣言の一種だと言わねば不正直である
△: struct Bar;が前方宣言では「ない」という主張
○: 構造体の定義ブロック内のstruct Bar;が前方宣言では「ない」という主張
で、struct Bar* m_pBar; の方が普通に前方宣言的に働く(スコープローカルな新たなタグBarを作ったりしない)のに --(1)
構造体の定義ブロック内のstruct Bar;は明らかにスコープローカルな新たなタグBarを作り出すという変態機能を有している --(2)
つまり(2)を指して一貫して前方宣言だと主張するなら、(1)のstruct Bar* m_pBar;も前方宣言の一種だと言わねば不正直である
635デフォルトの名無しさん (ワッチョイ 8a33-3flP)
2018/12/13(木) 01:52:26.13ID:397gSR3k0636デフォルトの名無しさん (ワッチョイ 8ab3-cZSF)
2018/12/13(木) 02:46:28.04ID:5hqeTMOU0 (1) が前方宣言的に働く理由は >>622 で説明したんだけど、通じなかったかな…
637デフォルトの名無しさん (ワッチョイ 079f-Buu6)
2018/12/13(木) 08:36:49.07ID:fs9Sguzb0 >>634
>struct Bar;は明らかにスコープローカルな新たなタグBarを作り出す
構造体定義ブロック内に限らずとも、前本宣言はもともとすべてスコープローカルだけど。
それはグローバルであっても、中間階層の名前空間であっても、
多重ネストの構造体の中間階層で会っても同じ。
>struct Bar;は明らかにスコープローカルな新たなタグBarを作り出す
構造体定義ブロック内に限らずとも、前本宣言はもともとすべてスコープローカルだけど。
それはグローバルであっても、中間階層の名前空間であっても、
多重ネストの構造体の中間階層で会っても同じ。
638デフォルトの名無しさん (ワイーワ2 FF42-yWnt)
2018/12/13(木) 13:11:12.72ID:zFPTCGevF 拘ってる人は自前でコンパイラでも作ろうとしてるのか?
639デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/13(木) 16:31:01.00ID:jSkPpV300640デフォルトの名無しさん (ワッチョイ 9fe3-S6R4)
2018/12/14(金) 15:03:53.29ID:TcnBR/ER0 最初に質問を書いた者だが、この話は、実は仕様が決まっていて、
記憶だと、手元にある ARM(Annotated Reference Manual) にも、確か
何か書いてあった。
見るのがメンドクサくてここに質問を書いたんだ。スマン。
記憶だと、手元にある ARM(Annotated Reference Manual) にも、確か
何か書いてあった。
見るのがメンドクサくてここに質問を書いたんだ。スマン。
641デフォルトの名無しさん (ワッチョイ 2b23-yWnt)
2018/12/14(金) 17:33:38.94ID:6VLPSm+70 3日で忘れる脳みそ
642634 (ワッチョイ 8abd-U1IU)
2018/12/14(金) 20:33:44.26ID:PXFrjbZo0643デフォルトの名無しさん (アウアウウー Sa4f-POOn)
2018/12/15(土) 18:02:44.15ID:9IWy3eNma プログラム間でデータ共有する方法はメモリ共有とファイル経由以外に何がありますか
644デフォルトの名無しさん (ワッチョイ fa7e-UKyl)
2018/12/15(土) 18:19:26.83ID:a5AQAbac0 >>643
RPC
RPC
645デフォルトの名無しさん (ワッチョイ 8a7c-S6R4)
2018/12/15(土) 20:09:27.38ID:0fkVwVva0 >>643
・WM_COPYDATA メッセージで送り合う。
・WM_COPYDATA メッセージで送り合う。
646はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-UKyl)
2018/12/15(土) 20:24:45.65ID:l0ksdq3r0 >>643
Windows ならメールスロットとパイプもアリかな。
Windows ならメールスロットとパイプもアリかな。
647デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 20:36:21.43ID:NSrOcjuo0 質問者の意図がようわからんが
データ本体(スゲー巨大かもしれない)の共有にいちいち通信時間を要する手段は除外されるんじゃ…
やっぱプロセス間の同期をミューテックスか何かのプロセス間でも使える同期オブジェクトまたはソケット通信とかでとる前提で、
データ本体のはメモリ共有かファイルという手段になるのではなかろうかと、
データ本体(スゲー巨大かもしれない)の共有にいちいち通信時間を要する手段は除外されるんじゃ…
やっぱプロセス間の同期をミューテックスか何かのプロセス間でも使える同期オブジェクトまたはソケット通信とかでとる前提で、
データ本体のはメモリ共有かファイルという手段になるのではなかろうかと、
648デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 21:19:09.14ID:hAY8T09E0 >>643
OpenClipboard
OpenClipboard
649デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/15(土) 21:55:14.09ID:px2y3yP70 ファイル渡しの方が通信よりよっぽど時間がかかると思うが。
650デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 22:03:48.34ID:hAY8T09E0 オンメモリのはずの処理が秒待たされて・・・
651デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 22:05:56.86ID:NSrOcjuo0652デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/15(土) 22:15:15.80ID:px2y3yP70 ディスクアクセスの遅さ考えたらわかるだろ、ふつう。
653デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 22:47:45.19ID:NSrOcjuo0654デフォルトの名無しさん (ワッチョイ fa7e-UKyl)
2018/12/15(土) 22:51:21.25ID:a5AQAbac0 たった一行の素朴な質問からどこまで膨らませられるかコンテスト開始
655デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 22:54:08.01ID:NSrOcjuo0 通信推しの人としてはそう言いたくなる気持ちもワカル
656デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/15(土) 22:58:01.76ID:px2y3yP70 1TBのデータ共有するのにファイルからは1TB読まなくてもいいという謎比較。
657デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/15(土) 23:09:43.46ID:8aRCy95z0 同一の計算機で何度も読むことが分かってるのに
別の計算機でディスクアクセスさせて
それを通信でやりとするアホなシステム構成にするヤツがあとを絶たないのがよくわかる
著しい低学歴知恵遅れがそういうことよくやる
別の計算機でディスクアクセスさせて
それを通信でやりとするアホなシステム構成にするヤツがあとを絶たないのがよくわかる
著しい低学歴知恵遅れがそういうことよくやる
658デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/15(土) 23:23:37.08ID:8aRCy95z0 世の中には常識をこえるすごい頭悪いヤツラがいるからな
何度も何度も計算機Aから計算機Bの数十ギガを超える共有ファイルの内容を計算機Aにすべて読み込んで
計算機Aで処理をなん百回も繰り返す
しかも共有に使うSamba
つまりNBT()
Windows共有とまったく同じ
つまり毎回毎回計算機Bにディスクアクセスして通信(NBT経由)使って
計算機Aで読込むということを意味する
それで遅い遅いなんでといってたからな。。。
世の中には想像を超えるこんな頭悪いのが現実にいる
何度も何度も計算機Aから計算機Bの数十ギガを超える共有ファイルの内容を計算機Aにすべて読み込んで
計算機Aで処理をなん百回も繰り返す
しかも共有に使うSamba
つまりNBT()
Windows共有とまったく同じ
つまり毎回毎回計算機Bにディスクアクセスして通信(NBT経由)使って
計算機Aで読込むということを意味する
それで遅い遅いなんでといってたからな。。。
世の中には想像を超えるこんな頭悪いのが現実にいる
659デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 23:35:37.00ID:NSrOcjuo0660デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/15(土) 23:49:56.32ID:NSrOcjuo0661デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/16(日) 08:13:31.96ID:OmvADhcW0 なんか長々と書いているようだが、全部送ろうが一部だろうが正しく同条件で比較すれば一目瞭然だろう。
1. プロセスAが巨大なファイル中の一部のデータの読み込みをファイルシステムに要求する
2. ストレージから読みだされたデータが返される
1. プロセスAがプロセスBが持つ巨大なデータ中の一部のデータをRPCで要求する
2. プロセスBからデータが返される
1. プロセスAが巨大なファイル中の一部のデータの読み込みをファイルシステムに要求する
2. ストレージから読みだされたデータが返される
1. プロセスAがプロセスBが持つ巨大なデータ中の一部のデータをRPCで要求する
2. プロセスBからデータが返される
662デフォルトの名無しさん (ワッチョイ d3b3-UKyl)
2018/12/16(日) 08:26:49.11ID:sqE5CAYo0 >>660
データベースなら例えばSQLでやりとりやね
既にオンメモリで数ギガ扱うのに対応してるしプログラム間通信も高速
なにより統一されたプロトコルでオンメモリからネットにまでアクセスできるのが便利
データベースなら例えばSQLでやりとりやね
既にオンメモリで数ギガ扱うのに対応してるしプログラム間通信も高速
なにより統一されたプロトコルでオンメモリからネットにまでアクセスできるのが便利
663デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/16(日) 08:37:36.18ID:OmvADhcW0664デフォルトの名無しさん (ワッチョイ d3b3-UKyl)
2018/12/16(日) 08:48:33.22ID:sqE5CAYo0 それはデータベースとは言わんのじゃ?
COPY_DATAやメールスロットはOS提供の簡易的なプロセス間通信サービス
RPCはデータ以に上さらに高度にアクセスするプロシージャ
COPY_DATAやメールスロットはOS提供の簡易的なプロセス間通信サービス
RPCはデータ以に上さらに高度にアクセスするプロシージャ
665デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/16(日) 09:09:15.05ID:OmvADhcW0 データをどう持つかというのはこの際どうでもよくて、>>663はそのサーバープロセスと
データをやり取りする手段の話ね。
データをやり取りする手段の話ね。
666デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/16(日) 12:31:06.96ID:DTKapPnl0 >>663
>これを実現する手段として>>644-646のような手段があるわけだが、それ認識してなかったのか。
>>644-646はデータを送りつけるという通信の手段のみ述べており、データ共有の実現に行き着いていない
もちろん通信だけでもプロセスAとBの間で情報の共有はできるが、
>>644-646の言説だけでは、情報を表す入れ物である「データ」の共有に行き着いていないワケ
>>644-646の言説が含意するのは、同じ情報iを、プロセスAがデータa、プロセスBがデータbとして持っている状況、
というところ止まりで、aとbは別物。さらにいうと、同じ形式のデータであることすら導くことができない
この差異は形而上の問題ではなく、現実の設計の問題である
>>644-646だけでは、AがBに情報伝達するにあたりBに通信する(通信のエンドポイントとしてBを起こす)必要があるから
Bが風邪で休んだりするとAの仕事まで止まってしまうことが確定する
一方、AがExcelシートXに情報を書き、Bが必要なときXの情報を参照する、という方式だと(他に付帯条件が無ければ)Aは問題なく仕事を続けられる
データ共有というのは後者
>これを実現する手段として>>644-646のような手段があるわけだが、それ認識してなかったのか。
>>644-646はデータを送りつけるという通信の手段のみ述べており、データ共有の実現に行き着いていない
もちろん通信だけでもプロセスAとBの間で情報の共有はできるが、
>>644-646の言説だけでは、情報を表す入れ物である「データ」の共有に行き着いていないワケ
>>644-646の言説が含意するのは、同じ情報iを、プロセスAがデータa、プロセスBがデータbとして持っている状況、
というところ止まりで、aとbは別物。さらにいうと、同じ形式のデータであることすら導くことができない
この差異は形而上の問題ではなく、現実の設計の問題である
>>644-646だけでは、AがBに情報伝達するにあたりBに通信する(通信のエンドポイントとしてBを起こす)必要があるから
Bが風邪で休んだりするとAの仕事まで止まってしまうことが確定する
一方、AがExcelシートXに情報を書き、Bが必要なときXの情報を参照する、という方式だと(他に付帯条件が無ければ)Aは問題なく仕事を続けられる
データ共有というのは後者
667デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/16(日) 13:20:15.29ID:OmvADhcW0668デフォルトの名無しさん (ワッチョイ 8ab3-skpA)
2018/12/16(日) 13:30:30.74ID:7UXd2BE00 なぜ機能とそれを実現する手段を混同して語るかなぁ…
Excelのブック共有だってExcelアプリケーションがファイル共有とか使って頑張ってるから実現できてるんだし
そもそも>>643は手段レベルの話だし
Excelのブック共有だってExcelアプリケーションがファイル共有とか使って頑張ってるから実現できてるんだし
そもそも>>643は手段レベルの話だし
669デフォルトの名無しさん (ワッチョイ 8abd-U1IU)
2018/12/16(日) 13:34:08.04ID:DTKapPnl0670デフォルトの名無しさん (ワッチョイ 8ab3-skpA)
2018/12/16(日) 14:20:42.94ID:7UXd2BE00 ネットワークトポロジー
最近覚えたのかな? w
最近覚えたのかな? w
671デフォルトの名無しさん (ワッチョイ d3b3-L470)
2018/12/16(日) 16:50:47.90ID:n9CIi+tQ0 郵送が確実。
672デフォルトの名無しさん (ドコグロ MMc2-skpA)
2018/12/16(日) 16:58:48.71ID:JWRTcoVNM 残念ながらリアル郵便網を使うプロトコルスタックはないので伝書鳩にした方がいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” ★2 [ぐれ★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- オイルマッサージ施術中20代女性にわいせつ行為か セラピストの男(30)を再逮捕 余罪複数とみて警視庁が捜査 [どどん★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 高市内閣の支持率、下落wwwwwwwwwww [834922174]
- Vtuber「人気アニメとコラボします!」←これでVが叩かれるの謎じゃね
- Xでフォローしてきた人をフォロバして相手のフォロー解除するのが趣味なんだが
- 愛国者「徴兵されるのは嫌。でも敵が侵略してきたら考えます」 [834922174]
- (´・ω・`)おみゃんりゃ〜
- 【悲報】日中戦争5割が賛成、高市キッズたち徴兵へ [834922174]
