свойства работают над django образцовыми полями?

Вы происходите B от A<B>, таким образом, первая вещь, которую делает компилятор, как только это видит определение класса B, состоит в том, чтобы попытаться инстанцировать A<B>. Чтобы сделать это, этому нужно к известному B::mytype для параметра action. Но так как компилятор находится только в процессе выяснения фактического определения B, это еще не знает этот тип, и Вы получаете ошибку.

Один путь вокруг этого, должен был бы объявить тип параметра как другой шаблонный параметр, вместо внутренней части производный класс:

template<typename Subclass, typename Param>
class A {
    public:
        void action(Param var) {
                (static_cast<Subclass*>(this))->do_action(var);
        }
};

class B : public A<B, int> { ... };
37
задан djvg 7 December 2018 в 15:07
поделиться

1 ответ

Поле модели уже является свойством, поэтому я бы сказал, что вы должны сделать это вторым способом, чтобы избежать конфликта имен.

Когда вы определяете foo = свойство (..) фактически перекрывает foo = models .. строка, так что это поле больше не будет доступно.

Вам нужно будет использовать другое имя для свойства и поля. Фактически, если вы сделаете это так, как в примере №1, вы получите бесконечный цикл, когда попытаетесь получить доступ к свойству, поскольку теперь оно пытается вернуть себя.

РЕДАКТИРОВАТЬ: Возможно, вам также следует рассмотреть возможность отказа от использования _foo в качестве имени поля, а скорее foo ,

20
ответ дан 27 November 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: