Реализация функции-члена вложенной структуры внутри класса шаблона вне определения класса - PullRequest
0 голосов
/ 01 февраля 2020

Я упростил свой код, с которым столкнулся с проблемой. Я хочу сделать все реализации членов-функций вне определения класса / структуры. Это все работает, но если у меня есть функция-член, которая возвращает указатель на вложенный объект структуры, это не работает. Я думаю, что код ниже показывает проблему.

template <class T>
class MyClass
{
private:
    struct InnerStruct;
    InnerStruct* inStruct;


public:
    MyClass(const T* val);
    const InnerStruct* GetInnerStruct(); //this works if implemented in class definition, not implemented outside
    void DoSomethingWithInnerStruct(); //this works in both ways (implemented here or outside).
};

template <class T>
struct MyClass<T>::InnerStruct
{
    T* a;
};

template <class T>
MyClass<T>::MyClass(const T* val)
{
    inStruct = new InnerStruct();
    inStruct->a = val;
}

template <class T>
const MyClass<T>::InnerStruct* MyClass<T>::GetInnerStruct() //Heres the Problem!! Syntaxerror: identifier 'InnerStruct'.
                                                            //This works just fine if i write implemention in class definition.
{
    return this->inStruct;
}

template <class T>
void MyClass<T>::DoSomethingWithInnerStruct() //this works just fine 
{
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...