Как добавить структуру наследования в класс, ссылаясь на «enable_share_on_this» - PullRequest
0 голосов
/ 01 февраля 2019

Я работаю над классом C ++, в который я хотел бы добавить структуру наследования, но недавно мои коллеги добавили enable_shared_from_this, блокируя возможность добавления структуры наследования.Кто-нибудь знает правильный синтаксис?

Заранее спасибо

Текущая реализация:

class ATL_NO_VTABLE Own_Class
    public std::enable_shared_from_this<Own_Class>
{
public:
    Own_Class();

Первая попытка:

class ATL_NO_VTABLE Own_Class : public NONSENSE
    public std::enable_shared_from_this<Own_Class>
{
public:
    Own_Class();

=>C2143 : syntax error : missing ',' before 'public'

Вторая попытка:

class ATL_NO_VTABLE Own_Class :
    public std::enable_shared_from_this<Own_Class> : : public NONSENSE
{
public:
    Own_Class();
=>C2143 : syntax error : missing ',' before 'public'

Третья попытка (довольно отчаянная):

class ATL_NO_VTABLE Own_Class :
    public std::enable_shared_from_this<Own_Class : public NONSENSE>
{
public:
    Own_Class();
=>C2059 : syntax error ':'

(извините за саркастический тон, но это действительно расстраивает)

1 Ответ

0 голосов
/ 01 февраля 2019

Правильный синтаксис для использования множественного наследования в C ++ следующий:

class SomeClass : public InheritA, public InheritB
{
  // [...]
}

Так что в вашем случае должно работать следующее:

class ATL_NO_VTABLE Own_Class : public NONSENSE, public std::enable_shared_from_this<Own_Class>
{
  // [...]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...