【发布时间】:2019-07-04 08:12:08
【问题描述】:
我正在尝试声明一个抽象类型的私有静态成员变量。代码:
class AbstractClass{
public:
virtual double operator()() = 0;
};
class ThisOneContainsIt{
private:
static AbstractClass var; //this does not work
static AbstractClass & var; //this seems to work, but...
}
//my .cpp
AbstractClass & ThisOneContainsIt::var; //...this does not work either
现在我的想法已经用完了。我很确定这一定是可能的 - 我总是可以删除 = 0 以使课程非抽象,但这不是我真正想做的。
【问题讨论】:
-
你必须初始化引用。你想达到什么目的?
-
“不起作用”是什么意思?
-
XY 问题?你到底想达到什么目标?
-
名为 AbstractClass 的抽象类不能被实例化,因为它是抽象的。因此,当您尝试实例化它时,编译器会报错。
-
您可以声明一个指向
AbstractClass的指针并将其初始化为空(这几乎是这里唯一的选择)。请注意,ThisOneContainsIt也是抽象的,因为您没有覆盖基类的纯函数,因此尝试实例化它也会失败。
标签: c++ static private abstract