如何向类添加继承结构,请参阅“ enable_share_on_this”

时间:2019-02-01 11:20:43

标签: c++ inheritance

我正在研究一个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 :(得分:1)

在C ++中使用多重继承的正确语法如下:

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

因此,在您的情况下,以下方法应该起作用:

class ATL_NO_VTABLE Own_Class : public NONSENSE, public std::enable_shared_from_this<Own_Class>
{
  // [...]
}