C ++: С CRTP, класс определенный в производном классе недоступен в базовом классе

Вот (упрощенный) базовый класс:

template <class T>
class SharedObject
{
protected:
    QExplicitlySharedDataPointer <typename T::Data> d;
};

А вот производный:

class ThisWontCompile : public SharedObject <ThisWontCompile>
{
private:
    friend class SharedObject;
    struct Data : public QSharedData
    {
        int id;
    };
};

Есть ли обходной путь для доступа к ThisWontCompile :: Data из SharedObject ? Что именно можно и что нельзя делать с объектом, производным от базового объекта?

7
задан Septagram 4 April 2011 в 05:15
поделиться