以下のように、ネストされたクラスの完全修飾名を使用しようとしていますが、コンパイラーが動作しません!
template <class T> class Apple {
//constructors, members, whatevers, etc...
public:
class Banana {
public:
Banana() {
//etc...
}
//other constructors, members, etc...
};
};
template <class K> class Carrot{
public:
//etc...
void problemFunction()
{
Apple<int>::Banana freshBanana = someVar.returnsABanana(); //line 85
giveMonkey(freshBanana); //line 86
}
};
私の問題は、コンパイラが言うことです:
Carrot.h:85: error: expected ';' before 'freshBanana'
Carrot.h:86: error: 'freshBanana' was not declared in this scope
完全修飾名を使用すると、このネストされたクラスにアクセスできると思っていましたか? おそらく顔を殴られるだろうが、一体何が見えないのだろう??