ID非公開

2022/6/30 12:24

33回答

sampleAクラスで定義したpublicのメンバー関数(メソッド) は、sampleAクラスのオブジェクトが生成されてから、はじめて他のクラスから呼べるようになる。であっていますか?

補足

C++に関しての質問です。

C言語関連 | プログラミング60閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

その他の回答(2件)

0

struct sampleA { static void f1() { } }; int main() { A::f1(); } sampleA クラスのオブジェクトは無い状況ですが f1 を呼び出すことが出来ます。 #include <iostream> struct sampleA { char s[1]; void f1() const { std::cout << s << std::endl; } }; int main() { reinterpret_cast<const sampleA*>("TEST")->f1(); } 特殊なやり方になってしまいますが、このようにすることが出来ます。ここでも sampleA クラスのオブジェクトは無い状況です。 #include <iostream> struct sampleA { template<int n>static void メソッド() { std::cout << n << std::endl; } }; int main() { sampleA::メソッド<1>(); sampleA::メソッド<2>(); } この場合は sampleA クラスはインスタンス化していませんが、sampleA クラスのメソッドをインスタンス化しています。 【「インスタンス化されたsampleAクラスのメソッドをsampleBクラスで呼ぶ」以外に正しい言い方はありますか?】 sampleA クラスのメソッドを sampleB クラス内にあるどれかのメソッドから呼ぶ、という言い方が良いと思います。

0

>インスタンス化されたsampleAクラスのメソッドをsampleBクラスで呼ぶ こういうことも可能です。 https://ideone.com/aqEG01 #include <iostream> using namespace std; struct sampleA{ static int multi(int value){ return 3*value; } }; struct sampleB{ int get(int value){ return 12 + sampleA::multi(value); } }; int main() { sampleB b; cout << b.get(2) << endl;//18 return 0; }