C ++: IntelliSense не работает для шаблонов - PullRequest
0 голосов
/ 26 мая 2020
template <class T, class U> struct Additional {
    T t;
    U u;
};
template <class T, class U> struct Base {
    void test1() {
        additional-> // members are shown here
    }
    Additional<T, U>* additional;
};
template <class T, class U> struct Derived : Base<T, U> {
    void test2() {
        additional-> // IntelliSense: 'No members available'
    }
};

Я отметил в комментариях интересные места. Цель состоит в том, чтобы получить доступ к предложенным членам внутри test2(). В первый раз я попытался объявить шаблон struct внутри другого шаблона struct (Additional в Base), но нотация стала сложной, поэтому я решил оставить Additional снаружи. Я делаю контейнеры Dynami c для использования с драйверами ядра. VS2019, Win 10, последние обновления для обоих. Некоторые предложенные варианты, которые не сработали:

template <class T, class U> struct Derived : Base<T, U> {
    void test2() {
        this->additional-> // This one passed the compile
    }
};
template <class T, class U> struct Derived : Base<T, U> {
    void test2() {
        Base<T, U>::
    }
};
template <class T, class U> struct Derived : Base<T, U> {
    using Base<T, U>::additional;
    void test2() {
        additional->
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...