0

最初に - これは本当に初歩的な質問であることは知っていますが、ちょっと - 私たちは皆、初歩的であることから始めますよね?このようなものを扱うのに苦労しています。これは、Microsoft Visual Studio Professional 2012 で記述されたコードです。

template <class T>
class A
{
protected:
    int f(){return 0};
};

template <class T>
class B : public A<T>
{
protected:
    int f2()
    {
        return this->;
    }
};

問題は、オートコンプリート オプションで、 A 変数に沿った実際の B 変数であるすべての B '変数' を表示していたことです。しかし、テンプレートを使用すると、「this->」と書き留めると、クラス B の変数しか表示されません。(言うまでもなく、テンプレート宣言を削除すると、問題なく動作し、「this->」は f()f2() の両方のオプションを提供します) 何か間違っていることはありますか?

4

1 に答える 1

0

あなたの質問はこれと重複していると思います:

テンプレート: 継承されたクラスで親クラスのメンバー変数が表示されない

UncleBens の最初の回答は、それを非常にうまくまとめています。

[...]テンプレート クラスのテンプレートの親は、最初にテンプレートを調べるコンパイル パス中にインスタンス化されません。[...]

彼はまた、さらなる情報と、さらに読むための良いリンクを提供します.

于 2013-07-16T12:42:31.817 に答える