#include <iostream>
using namespace std;
class A{
public:
void K()
{
cout<<"1";
};
};
class B{
public: typedef A T;
void K()
{
cout<<"2";
};
};
class C{
public:
void K()
{
cout<<"3";
};
};
class D{
public:
void K()
{
cout<<"4";
};
};
template <class D=A> class E{
public: typedef D T;
void K()
{
cout<<"5";
};
};
template <> class E<A>{
public:typedef C T;
void K()
{
cout<<"6";
};
};
template <>class E<C>{
public:typedef B T;
void K()
{
cout<<"7";
};
};
template <class W, class V=E<W> >
class F{
typedef typename V::T R;
public:
void K()
{
V().K();
W().K();
R().K();
};
};
int main(){
E<>().K();
F<A>().K();
F<C>().K();
return 0;
}
なぜプログラムの出力が6 - 612 - 732であるかわかりません。誰かがこのプログラムの仕組みを助けてくれたら、メインの最初の行もし誰かが最初の雄叫びが6ステップバイステップであると私に言うことができたら、それはすばらしいでしょう。テンプレートとtypedefクラスのプログラム出力
このような問題を解決する適切なツールはデバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、[最小、完全、および確認可能](http:// stackoverflow)を含めるには、質問を編集する必要があります。com/help/mcve)の例と、デバッガで行った観察結果を表示します。 –
[それはもう少し明確になりますか?](http://coliru.stacked-crooked.com/a/a58abdf4e557a8ae) –