gpt4 book ai didi

c++ - 为什么我不能如下设置接口(interface)类的成员变量

转载 作者:太空狗 更新时间:2023-10-29 23:34:37 26 4
gpt4 key购买 nike

所以我有一个接口(interface)类

class interfaceClass
{
public:
virtual void func1( void ) = 0;
virtual void func2( void ) = 0;

protected:
int m_interfaceVar;
}

和一个继承自它的类。为什么我不能如下设置接口(interface)类的成员变量。

class inhertitedClass : public interfaceClass
{
inheritedClass(int getInt): m_interfaceVar(getInt){};
~inheritedClass(){};
}

我必须这样做

class inhertitedClass : public interfaceClass
{
inheritedClass(int getInt){ m_interfaceVar = getInt;}
~inheritedClass(){};
}

如果这是一个愚蠢的问题,我很抱歉,但前几天晚上我在将抽象类切换到接口(interface)类(返回到抽象类)时遇到了这个问题。

最佳答案

构造函数中的初始化列表可以首先指定基类 的构造函数。通过剥夺 interfaceClass 的( protected )构造函数(它显然 应该 具有),您已经切断了生命线。

因此添加 protected 构造函数,例如:

class interfaceClass
{
public:
virtual void func1( void ) = 0;
virtual void func2( void ) = 0;

protected:
int m_interfaceVar;
interfaceClass(int x) { m_interfaceVar=x; }
}

然后您可以以正确的方式做事,即

class inhertitedClass : public interfaceClass
{
inheritedClass(int getInt): interfaceClass(getInt){};
~inheritedClass(){};
}

关于c++ - 为什么我不能如下设置接口(interface)类的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2332006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com