Комбинирование классов стратегий

132
19 февраля 2019, 04:10

Начал читать Александреску, и наткнулся на следующий код в начале книги:

template<
    class T
    , template<class> class CheckingPolicy
    , template<class> class ThreadingModel
    , template<class> class Storage = DefaultSmartPtrStorage
    >
class SmartPtr :
    public CheckingPolicy<T>
    , public ThreadingModel<SmartPtr> {
    public:
        T *operator-> ( ) {
            typename ThreadingModel<SmartPtr>::Lock guard( *this );
            CheckingPolicy<T>::Check( mPoint );
            return mPoint;
        }
    private:
        T *mPoint;
};

Пытаясь разобраться как это работает, вбил это дело в свою ide и получил следующую семантическую ошибку:

error: use of class template 'SmartPtr' requires template arguments
note: template is declared here

на строку

    , public ThreadingModel<SmartPtr> {

Что мне пытаются сказать я понимаю, однако не могу понять, это косяк книги, или же я допустил какую то ошибку?

READ ALSO
C++, const методы

C++, const методы

Рассмотрим пример:

148
JavaFx Проблема с временным открытием окна

JavaFx Проблема с временным открытием окна

Код немного кривой, но проблема заключается в создании окна в methodNormal при выполнении show() окно появляетьтся и его блокирует Threadsleep(5000) а мне...

173
BigInteger, как увеличить вводимую строку?

BigInteger, как увеличить вводимую строку?

Имеется число с = 2 в степени 77232917И хочу записать это число в BigInteger a = new BigInteger("с"); Но длина строки ограничена, можно как то увеличить её?

146