!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part163
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bbda-Axul)
2022/12/30(金) 23:16:31.37ID:DPUEZfMS0140デフォルトの名無しさん (ワッチョイ 1dc2-K8ze)
2023/01/15(日) 09:58:07.55ID:/n5l5Pop0 同じく
質問の意図がわからんな
質問の意図がわからんな
141デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/15(日) 18:50:51.76ID:IyvDeUGt0 質問なのですがintやdoubleといった単純な型のグローバル変数の初期化タイミングは
グローバルなオブジェクトの初期化タイミングより前であることが保証される?
多分 .dataセクションの初期化はグローバルなオブジェクトの初期化リストの実行より前だと思うんだけど
(そうでなければコンストラクタからC言語のライブラリを安心して呼べないということになる
規格的にそうなん?
グローバルなオブジェクトの初期化タイミングより前であることが保証される?
多分 .dataセクションの初期化はグローバルなオブジェクトの初期化リストの実行より前だと思うんだけど
(そうでなければコンストラクタからC言語のライブラリを安心して呼べないということになる
規格的にそうなん?
142はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed3e-w88e)
2023/01/15(日) 19:52:54.05ID:1ER4Wl/40 >>141
静的初期化と動的初期化に大別されている。
初期化子が定数 (定数式) のものは静的初期化で、
そうではないものが動的初期化。
静的初期化は動的初期化より先であることは言語仕様で保証される。
静的初期化と動的初期化に大別されている。
初期化子が定数 (定数式) のものは静的初期化で、
そうではないものが動的初期化。
静的初期化は動的初期化より先であることは言語仕様で保証される。
143デフォルトの名無しさん (テテンテンテン MMde-N6nD)
2023/01/16(月) 08:14:19.28ID:X/jbWDD/M >>141
記憶が確かなら、c++の関数スコープのstatic変数は呼び出し時に初期化されることが保証されているので、初期化順を細かく決める必要がある場合は関数のstatic変数を使う。
記憶が確かなら、c++の関数スコープのstatic変数は呼び出し時に初期化されることが保証されているので、初期化順を細かく決める必要がある場合は関数のstatic変数を使う。
144デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:24:41.20ID:J3mmTfbR0145デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:26:34.64ID:J3mmTfbR0 訂正orz
×: (初期化済フラグがfalseならnewに進む、というのをアトミックにやる
○: (初期化済フラグがfalseならtrueにする、というのをアトミックにやって、false→trueに変化したときだけnewする
×: (初期化済フラグがfalseならnewに進む、というのをアトミックにやる
○: (初期化済フラグがfalseならtrueにする、というのをアトミックにやって、false→trueに変化したときだけnewする
146デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:33:23.86ID:J3mmTfbR0 とオモタがよく考えたら初期化済フラグがfalseならtrueに変化してからポインタpにnewされるまでの間に
別のスレッドが割り込んできてpを使おうとしたら破綻するからpを獲得できるまでスピンロック的に回ることが必要やったorz
ワイの答えはこれや……!
別のスレッドが割り込んできてpを使おうとしたら破綻するからpを獲得できるまでスピンロック的に回ることが必要やったorz
ワイの答えはこれや……!
147デフォルトの名無しさん (ワッチョイ caad-f6s+)
2023/01/18(水) 09:55:18.36ID:1kekdbbc0 今さらだけどさ、以下Perlソースコードみたいに初期化以外の場所で複数の変数代入を一行で記述できたら楽だよね。
($a, $b) = (1, 2);
($a, $b) = (1, 2);
148デフォルトの名無しさん (ワッチョイ 299c-N6nD)
2023/01/18(水) 10:18:29.33ID:kAps0iiP0 >>144
c++11からブロックスコープを持つstatic変数初期化はスレッドセーフだから、手動でやる必要ないんじゃない?
c++11からブロックスコープを持つstatic変数初期化はスレッドセーフだから、手動でやる必要ないんじゃない?
149デフォルトの名無しさん (ブーイモ MMb9-VlC0)
2023/01/18(水) 12:33:33.72ID:953Yg8XVM >>147
それ楽なん?
それ楽なん?
150デフォルトの名無しさん (テテンテンテン MMde-N6nD)
2023/01/18(水) 12:45:50.93ID:f+Qa9vK4M パターンマッチングとか単一化が欲しいという話じゃないの?
151デフォルトの名無しさん (ブーイモ MM2e-CztN)
2023/01/18(水) 12:49:04.55ID:aansOABgM 複数のことやってんだから複数行で書け
それかそんなにまとまり強いならラップしろ
それかそんなにまとまり強いならラップしろ
152デフォルトの名無しさん (ブーイモ MMb9-VlC0)
2023/01/18(水) 12:57:11.05ID:953Yg8XVM 俺もPerl使ってた頃に初期化で書いたことはあるけど、正直初期化以外での使い道ない気がする
rustのパターマッチは欲しい気がする
rustのパターマッチは欲しい気がする
153デフォルトの名無しさん (アウアウウー Sa91-ue0x)
2023/01/18(水) 19:31:01.29ID:x7mTRTnwa154デフォルトの名無しさん (ワッチョイ 4a7f-7DGa)
2023/01/18(水) 19:47:26.33ID:ZIWa3HiO0 int a, b;
tie(a, b) = tuple(1, 2);
tie(a, b) = tuple(b, a);
一応できなくはない。交換はswap(a, b)でいいけどね
tie(a, b) = tuple(1, 2);
tie(a, b) = tuple(b, a);
一応できなくはない。交換はswap(a, b)でいいけどね
155デフォルトの名無しさん (ワッチョイ 06bb-udV4)
2023/01/19(木) 20:52:51.98ID:Np6xvJtm0 つauto [a, b] = tuple(1, 2)
156デフォルトの名無しさん (ブーイモ MM2e-CztN)
2023/01/19(木) 20:59:17.18ID:MTxEyC+IM 書記か以外って話なんだが……
157147 (ワッチョイ caad-f6s+)
2023/01/19(木) 21:22:03.00ID:4HhHC5J20 解決方法を探しているんじゃなくて、言語仕様の変更提案なんだけど
改めてPerlだと以下のような感じ
use strict;
my ($a, $b) = ('AAA', 'BBB');
($a, $b) = ('YYY', 'ZZZ');
改めてPerlだと以下のような感じ
use strict;
my ($a, $b) = ('AAA', 'BBB');
($a, $b) = ('YYY', 'ZZZ');
158デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/19(木) 22:28:47.56ID:j0bW1DQy0 >>157
誰得?何得?
誰得?何得?
159デフォルトの名無しさん (ワッチョイ cdf0-iODI)
2023/01/19(木) 22:42:23.23ID:SyYOdr8r0 戻り値が1個だけ
どれを戻り値にするかで迷う
この辺はC++の欠点だと思う
どれを戻り値にするかで迷う
この辺はC++の欠点だと思う
160デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/19(木) 23:07:21.11ID:j0bW1DQy0 >>159
構造体で戻せばいいですよ、KR2 から構造体の実体というかコピーが返ってきますから、それこそ3個でも4個でもお好きに
構造体で戻せばいいですよ、KR2 から構造体の実体というかコピーが返ってきますから、それこそ3個でも4個でもお好きに
161デフォルトの名無しさん (ワッチョイ cdf0-iODI)
2023/01/19(木) 23:30:55.46ID:SyYOdr8r0 >>160
アホ
アホ
162147 (ワッチョイ caad-f6s+)
2023/01/19(木) 23:36:31.49ID:4HhHC5J20 複数個の変数に対する初期化のワンライナー記述(本当は初期化なので代入ではないが)が許されるなら、再初期化もワンライナー記述できていいと思うんだ
163デフォルトの名無しさん (ワッチョイ 06bb-udV4)
2023/01/19(木) 23:47:19.80ID:Np6xvJtm0 rvoが働くんだからタプルでも返せばいいのでは?
164デフォルトの名無しさん (アウアウウー Sa91-ue0x)
2023/01/20(金) 06:46:04.32ID:2AltcjPFa >>160
このためだけに構造体定義したりするとかアホの極みだろ...
このためだけに構造体定義したりするとかアホの極みだろ...
165デフォルトの名無しさん (スプッッ Sdca-X4Hx)
2023/01/20(金) 07:13:16.62ID:24yH8jzyd つtuple
166デフォルトの名無しさん (ワッチョイ 09f4-f6s+)
2023/01/20(金) 13:36:18.44ID:yONvkjD90 C++の新しい規格で複数個戻せるっての見た事あるが、気のせいか。
167デフォルトの名無しさん (ブーイモ MMde-VlC0)
2023/01/20(金) 14:39:16.65ID:7GHMGQ2oM うーん、やっぱり初期化以外での使い道がわからん
168はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 14:46:45.60ID:FDJF8fJ70169デフォルトの名無しさん (ワッチョイ caf0-7DGa)
2023/01/20(金) 15:19:11.41ID:MVRwt7H80 戻り値の型推論の規則が厳しいせいでtupleも微妙に使いづらい
170デフォルトの名無しさん (ブーイモ MMea-CztN)
2023/01/20(金) 16:25:40.34ID:g6yuQGRiM (x, y) = (x+y, y-x)
とか
とか
171デフォルトの名無しさん (ワッチョイ 09f4-f6s+)
2023/01/20(金) 16:26:57.09ID:yONvkjD90 >>168
修行いたします。mOm
修行いたします。mOm
172はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 16:50:23.92ID:FDJF8fJ70 std::tie や std::tuple ってそんなに長い名前でもないし、
C++ のややこしい文法をもっとややこしくしてまで
専用の分割代入の構文が欲しいかな?
C++ のややこしい文法をもっとややこしくしてまで
専用の分割代入の構文が欲しいかな?
173デフォルトの名無しさん (スプッッ Sdca-X4Hx)
2023/01/20(金) 17:54:27.63ID:o1hw1lmid いらんよな
174デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:14:48.86ID:5b5Mr70bd 欠点なのは間違いない
175デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:15:46.20ID:5b5Mr70bd C++は欠点が非常に多い
176147 (ワッチョイ caad-f6s+)
2023/01/20(金) 18:20:37.41ID:yyzNyqnf0 構造体のメンバ変数の再初期化を一行ですませたい需要、どうかな
177はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 18:21:31.76ID:FDJF8fJ70 それはそう。
178はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 18:22:22.62ID:FDJF8fJ70 C++ に欠点が多いのなんてイマサラな話だろ。
179デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:29:58.45ID:MjTZXIi3d はちみつも欠点が多い
180デフォルトの名無しさん (ワッチョイ 299c-N6nD)
2023/01/20(金) 19:33:42.78ID:/4tVg7x40181デフォルトの名無しさん (ワッチョイ f97f-VlC0)
2023/01/20(金) 20:55:20.44ID:HgRp3cSY0 再初期化ってのがまず無いかな
182デフォルトの名無しさん (ワッチョイ 1d46-K8ze)
2023/01/20(金) 21:12:53.47ID:bX3yX62I0 代入なら普通にあるね
183デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/20(金) 21:59:52.24ID:vRsHomcy0 >>164
単に名前付きタプルが欲しくてもない、というか名前付きタプルは限りなく構造体に近いというだけですよ
新しいものに飛びつく前に K&R2 以来の伝統の重みを評価するべきでしょう、型推論を併用すれば記述量も抑えることができますよ
https://marycore.jp/prog/cpp/anonymous-struct-tuple/
単に名前付きタプルが欲しくてもない、というか名前付きタプルは限りなく構造体に近いというだけですよ
新しいものに飛びつく前に K&R2 以来の伝統の重みを評価するべきでしょう、型推論を併用すれば記述量も抑えることができますよ
https://marycore.jp/prog/cpp/anonymous-struct-tuple/
184デフォルトの名無しさん (ワッチョイ a501-ue0x)
2023/01/20(金) 22:14:16.78ID:bK8iHZlj0 >>183
で、初期化じゃなくて代入はできるの?
で、初期化じゃなくて代入はできるの?
185デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 00:47:37.77ID:SJ/UeQbF0 >>176
どう書きたいのかいまいち分からん
どう書きたいのかいまいち分からん
186デフォルトの名無しさん (ワッチョイ 7f47-j5s0)
2023/01/21(土) 10:30:12.76ID:PxhUXXTz0187デフォルトの名無しさん (スプッッ Sd1f-N2va)
2023/01/21(土) 10:33:35.82ID:ITn943ohd tieって答え出てるのに気がついてないのかね
188デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/21(土) 12:44:01.44ID:p4hNMN+0d 使いにくすぎて使われない
189デフォルトの名無しさん (アウアウウー Saa7-WyxW)
2023/01/21(土) 13:11:10.71ID:Wi64nLVza190147 (ワッチョイ ffad-88l+)
2023/01/21(土) 14:45:55.24ID:4IvYDHHD0 HOGE構造体インスタンス hogeのメンバfooとbarだけを再設定したい時に、hogeというインスタンス文字列を何度も書かずに済むような仕組みあればいいなあ
HOGE hoge = {0};
do_something(hoge);
hoge.[foo, bar] = [1, 2];
HOGE hoge = {0};
do_something(hoge);
hoge.[foo, bar] = [1, 2];
191デフォルトの名無しさん (ワッチョイ cff2-BvhM)
2023/01/21(土) 15:22:29.46ID:G9LOOV8U0 そういうメソッドを用意するんだよ
192デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 15:42:11.09ID:jQCz8FAl0 ClassName::enumElementという書き方で列挙体の要素を直接持ってこれるクラスを見かけたんですが
どうやってやってるんですか?
定義見てもよくわかりませんでした
どうやってやってるんですか?
定義見てもよくわかりませんでした
193はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 15:48:28.56ID:AnImjWZM0 >>192
enum class と enum が別物だってのは知ってる?
enum class と enum が別物だってのは知ってる?
194デフォルトの名無しさん (ワッチョイ 337c-1i5X)
2023/01/21(土) 15:51:00.78ID:5FsD11Dw0 よくわからんがこれのことならenumは外のスコープに漏洩するから出来る
嫌ならenum classにする
class Foo{
public:
enum{HOGE, FUGA,};
};
int main(){
std::cout << Foo::HOGE;
}
嫌ならenum classにする
class Foo{
public:
enum{HOGE, FUGA,};
};
int main(){
std::cout << Foo::HOGE;
}
195デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 15:52:32.72ID:SJ/UeQbF0 >>192
何を書いているのかいまいち分からん
struct ClassName {
enum {
enumElement
};
};
int main () {
std::cout << ClassName::enumElement << '\n';
return 0;
}
何を書いているのかいまいち分からん
struct ClassName {
enum {
enumElement
};
};
int main () {
std::cout << ClassName::enumElement << '\n';
return 0;
}
196デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 20:19:12.82ID:jQCz8FAl0 説明がへたくそですみません
ClassName::EnumName::elementと書かないといけないところを、
途中のEnumNameを省略して使えるようになってます
>>193
普通のenumでした
ClassName::EnumName::elementと書かないといけないところを、
途中のEnumNameを省略して使えるようになってます
>>193
普通のenumでした
197デフォルトの名無しさん (ドコグロ MMdf-Ymzw)
2023/01/21(土) 20:30:34.45ID:2W6/mmpkM 普通のenumならEnumName::つかないよ
トップレベルに置いたenumもEnumName::つかないでしょ
トップレベルに置いたenumもEnumName::つかないでしょ
198はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 20:43:48.05ID:AnImjWZM0199はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 20:44:29.11ID:AnImjWZM0 >>198
C の列挙子は C++ と違ってファイルスコープなので C で仕様に適合するものが C++ ではそうなない場合もあるけど……。
たとえばこういうのは C では通るが C++ ではエラー。
#include <stdio.h>
int main(void) {
struct foo { enum bar { baz } qux; };
int n = baz;
printf("%d\n", n);
}
C の列挙子は C++ と違ってファイルスコープなので C で仕様に適合するものが C++ ではそうなない場合もあるけど……。
たとえばこういうのは C では通るが C++ ではエラー。
#include <stdio.h>
int main(void) {
struct foo { enum bar { baz } qux; };
int n = baz;
printf("%d\n", n);
}
200デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 22:18:57.09ID:SJ/UeQbF0 >>196
enumとenum classの違いは分かってるんだよね?
#include <iostream>
using namespace std;
struct ClassName {
enum enumElement {element};
enum class enumclassElement {element};
};
int main () {
cout << ClassName::element << '\n'
<< static_cast <int> (ClassName::enumclassElement::element) << '\n';
return 0;
}
enumとenum classの違いは分かってるんだよね?
#include <iostream>
using namespace std;
struct ClassName {
enum enumElement {element};
enum class enumclassElement {element};
};
int main () {
cout << ClassName::element << '\n'
<< static_cast <int> (ClassName::enumclassElement::element) << '\n';
return 0;
}
201デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 22:54:59.54ID:jQCz8FAl0202デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 17:51:51.29ID:mu8Nl5mu0 pythonのdecimalで2^256倍精度浮動小数点数の最大値を計算してみた。
https://ideone.com/aCP13Y
mpmathで検算もした。(桁数と先頭から千桁程度まで)
これらはC++だとどういうプログラムになるの?
メモリの容量から全桁の出力や検算は無理だと分かるが、できれば検算して戴きたい。
https://ideone.com/aCP13Y
mpmathで検算もした。(桁数と先頭から千桁程度まで)
これらはC++だとどういうプログラムになるの?
メモリの容量から全桁の出力や検算は無理だと分かるが、できれば検算して戴きたい。
203デフォルトの名無しさん (ラクッペペ MM7f-qqxO)
2023/01/22(日) 18:33:56.85ID:vg7X6MkGM IEEE 754で規格化されてる
204デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 18:53:45.43ID:mu8Nl5mu0 >>203
IEEE754準拠での値で計算してみた。
pythonのdecimalのlogでも検算したので多分合っていると思うが、
C++のプログラムだとどのように計算するのかな?という素朴な疑問です。
ideoneのc++だけでできる?
GMPあたりの任意精度パッケージとか必要になるのかな?
IEEE754準拠での値で計算してみた。
pythonのdecimalのlogでも検算したので多分合っていると思うが、
C++のプログラムだとどのように計算するのかな?という素朴な疑問です。
ideoneのc++だけでできる?
GMPあたりの任意精度パッケージとか必要になるのかな?
205デフォルトの名無しさん (ワッチョイ 4376-gzmJ)
2023/01/22(日) 19:56:25.38ID:6lZDc9UV0 C++標準ライブラリにはないから外部ライブラリに頼ることになる
ideoneがそれ用のライブラリを持ってるか知らんから頑張って探すしかない
ideoneがそれ用のライブラリを持ってるか知らんから頑張って探すしかない
206デフォルトの名無しさん (ワッチョイ 6f8c-Grv2)
2023/01/22(日) 20:32:22.10ID:9f7YJXTs0207デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 20:43:06.21ID:mu8Nl5mu0 参考にします。どうもありがとう。
208デフォルトの名無しさん (ワッチョイ d3bb-j5s0)
2023/01/23(月) 02:24:27.76ID:6OKqnjyz0 C++って最初のバージョンはC言語で開発されましたか?
どこかその話のソースありませんか?
どこかその話のソースありませんか?
209デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/23(月) 07:10:57.25ID:HN6zkKZyd cfrontはC++をCに翻訳するトランスレータ
というのはソースにならんか?
というのはソースにならんか?
210デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/23(月) 08:01:54.02ID:eLWdsBBpM >>208
「C++の設計と進化」を読め。
「C++の設計と進化」を読め。
211デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/23(月) 08:27:15.10ID:ntFDJsM90 C言語がC++から派生したというのは本当の話ですか?
212デフォルトの名無しさん (ワッチョイ ffad-88l+)
2023/01/23(月) 09:40:42.62ID:K1n6gQar0 >>211
あなたがウソである証拠を示せばいいだけ。他者に証拠を求めてはいけない。
あなたがウソである証拠を示せばいいだけ。他者に証拠を求めてはいけない。
213デフォルトの名無しさん (ワイーワ2 FFdf-1H6R)
2023/01/23(月) 10:00:24.86ID:6gVuxkoXF polymorphic_allocatorなんでコピーでresource伝播してくれないんだ・・・
214はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/23(月) 13:17:00.05ID:WcsuDU3H0 >>211
C が始まったとき (1972 年) に C++ は無い。
C++ の前身である C with Classes の歴史の始まりは 1979 年で、そのときは
C のプリプロセッサとして書かれていたしあくまでも C の拡張と見なされていた。
後に C は C++ からかなり多くを取り入れることになるし
現在進行形で取り入れてもいるが、それを「派生」とは普通は呼ばない。
普通は呼ばないがそこらへんは言葉の定義の問題なので「派生」という言葉の
定義によっては無理すれば派生と呼べなくもないかもね。
C が始まったとき (1972 年) に C++ は無い。
C++ の前身である C with Classes の歴史の始まりは 1979 年で、そのときは
C のプリプロセッサとして書かれていたしあくまでも C の拡張と見なされていた。
後に C は C++ からかなり多くを取り入れることになるし
現在進行形で取り入れてもいるが、それを「派生」とは普通は呼ばない。
普通は呼ばないがそこらへんは言葉の定義の問題なので「派生」という言葉の
定義によっては無理すれば派生と呼べなくもないかもね。
215デフォルトの名無しさん (ワッチョイ d3bb-j5s0)
2023/01/23(月) 14:21:27.16ID:6OKqnjyz0216デフォルトの名無しさん (ワッチョイ 736b-li2T)
2023/01/26(木) 06:18:10.77ID:nnR+UHRw0 名前付き引数標準化への動向って今どうなん
標準化はしないから各自勝手にやってねって感じ?
標準化はしないから各自勝手にやってねって感じ?
217デフォルトの名無しさん (ワッチョイ e397-li2T)
2023/01/26(木) 07:48:33.46ID:XZjGtAvJ0 class A{
public:
void operator () () {...}
};
class B : public A{
void func(){
ここでオペレータ()を呼びたいとき、(*this)()としたら呼べますが、this→()では呼べませんでした。
なぜでしょうか?
}
};
public:
void operator () () {...}
};
class B : public A{
void func(){
ここでオペレータ()を呼びたいとき、(*this)()としたら呼べますが、this→()では呼べませんでした。
なぜでしょうか?
}
};
218デフォルトの名無しさん (ガックシ 067f-Ck/1)
2023/01/26(木) 08:02:56.89ID:HqVXg6xF6 >>217
オペレータが左右にとるのは引数でthis->だけだと型が違うから?
オペレータが左右にとるのは引数でthis->だけだと型が違うから?
219デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/26(木) 08:03:37.78ID:fdXxt+2fM220デフォルトの名無しさん (ワッチョイ e3f0-kZgD)
2023/01/26(木) 09:02:29.12ID:UDXsjb/60 メソッド
221はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/26(木) 11:28:53.15ID:Y60o/Mze0 × メソッド
〇 メンバ関数
〇 メンバ関数
222デフォルトの名無しさん (ワッチョイ e3da-c8s6)
2023/01/26(木) 11:34:13.17ID:EgU8zvdT0 さてはDelphiやってたな
223デフォルトの名無しさん (ワッチョイ cf02-li2T)
2023/01/26(木) 12:10:18.58ID:2OqTfEEK0 >>219様のやり方でできました皆様ありがとうございます
224デフォルトの名無しさん (ワッチョイ cf02-li2T)
2023/01/26(木) 12:11:12.58ID:2OqTfEEK0 すみませんもう一個質問させてください。
template<class T> class A{
public:
void f(){…}
};
template<class T> class B : public A<T>{
public:
void g(){f();}
};
というコードがあったとき、g 内の f が undeclared identifier だというエラーが出ますよね?
T が不明だからそうなるのだと説明されてるのを見たのですが、T はコンパイル時には確定してるのになぜダメなのでしょうか。
template<class T> class A{
public:
void f(){…}
};
template<class T> class B : public A<T>{
public:
void g(){f();}
};
というコードがあったとき、g 内の f が undeclared identifier だというエラーが出ますよね?
T が不明だからそうなるのだと説明されてるのを見たのですが、T はコンパイル時には確定してるのになぜダメなのでしょうか。
225デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/26(木) 12:18:25.89ID:epYCai+9d template<>class A<void>{};
のようにf()のない特殊化をされる
可能性があるってことさ
のようにf()のない特殊化をされる
可能性があるってことさ
226デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/26(木) 12:30:19.94ID:eBsKw41eM227デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/26(木) 13:28:25.80ID:epYCai+9d SFINAEに使う技
228デフォルトの名無しさん (ワッチョイ 139b-li2T)
2023/01/26(木) 14:00:57.20ID:+VNq3wn00229デフォルトの名無しさん (ワッチョイ c35f-j5s0)
2023/01/26(木) 14:08:41.08ID:UQ2YAYq30 this->f で済むだろうに、設計を変えるほどのことなのか。
230デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 14:16:44.11ID:WpjBlsOj0231デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 14:17:00.65ID:WpjBlsOj0232デフォルトの名無しさん (ワッチョイ 4376-YIrE)
2023/01/26(木) 20:20:42.59ID:yE3XErdV0 すでに出てるけどA<T>が何者か確定してないので、
(B<int>とかの具体的な型が決まる時ではなく)テンプレート宣言時にエラーになる。
template<class T> class B : public A<T>{
using A<T>::f;
public:
void g(){f();}
};
のように親クラスA<T>にメンバーfがいることを宣言してやればテンプレート宣言自体は通る。
(B<int>とかの具体的な型が決まる時ではなく)テンプレート宣言時にエラーになる。
template<class T> class B : public A<T>{
using A<T>::f;
public:
void g(){f();}
};
のように親クラスA<T>にメンバーfがいることを宣言してやればテンプレート宣言自体は通る。
233デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 22:25:04.25ID:WpjBlsOj0234デフォルトの名無しさん (ワッチョイ 5310-8jlp)
2023/01/26(木) 23:06:43.67ID:RzvFLRxY0235デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 23:24:47.70ID:WpjBlsOj0236デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 23:24:56.86ID:WpjBlsOj0237デフォルトの名無しさん (ワッチョイ 736b-li2T)
2023/01/27(金) 08:40:23.26ID:m0DNDaLC0 テンプレート引数の取得ってどうやるんでしたっけ?
template<int N = 100> class A{
...
};
class B : public A<>{
ここから N (=100) が見えなくて困ってます。
};
template<int N = 100> class A{
...
};
class B : public A<>{
ここから N (=100) が見えなくて困ってます。
};
238デフォルトの名無しさん (ワッチョイ 337c-1i5X)
2023/01/27(金) 08:43:39.83ID:dyzf+7Sd0 Aの中にstatic const int nankanokosuu = N;とか定義しておく
239デフォルトの名無しさん (ワッチョイ b321-Pfi1)
2023/01/27(金) 08:49:13.97ID:zx6ru0te0 >>237
class B : public A<>{
template <template<int> class T, int N> int func(T<N>*) { return N; }
public:
void test()
{
cout << func(this);
}
};
class B : public A<>{
template <template<int> class T, int N> int func(T<N>*) { return N; }
public:
void test()
{
cout << func(this);
}
};
240デフォルトの名無しさん (ラクッペペ MM7f-YWJ8)
2023/01/27(金) 10:58:57.46ID:IAqgV/bpM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏「この喧嘩は日本の完敗」 台湾有事答弁めぐる外務省局長訪中で指摘「中国に怒られてご説明に伺った日本と見られる」 [muffin★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 高市コイン、155円突破wwwwwwwwww [246620176]
- おじゃる丸をまったり待機するスレ🏡
- 高市早苗の中国問題、「オーバーツーリズムが解消されてウザい中国人が消えるから日本の勝ち」という風潮になってしまう [562983582]
- 女の子のケツって無断で揉んでも
- 【悲報】有名ウヨ論客、「現実的に考えて中国と仲直りするしかなくね?」と言ったら野良ウヨから総叩きにあう [856698234]
