你能看看这段代码吗:
#include <vector>
class A
{
public:
A(int a, int b);
};
class C :public A
{
public:
C(int a, int b):A(a,b){}
static C instances;
};
C C::instances;
int main()
{
return 1;
}
编译给我的错误是:
$ c++继承.cpp 继承.cpp:16:6:错误:没有匹配的函数调用'C::C()' 继承.cpp:16:6:注意:候选人是: 继承.cpp:12:2:注意:C::C(int, int) 继承.cpp:12:2:注意:候选人需要 2 个参数,提供 0 继承.cpp:8:7: 注意:C::C(const C&) 继承.cpp:8:7: 注意:候选人需要 1 个参数,0 提供
我需要 C 从 A 继承,我需要 A 在其构造函数中有参数。最后,我需要声明和定义不带参数的实例的静态变量。那么有没有解决办法呢?我重视你的善意评论。
还有一点需要注意:如果静态变量是一个容器,比如:
静态 std::vector 实例;
代码可以编译得很好。为什么?
编辑:
感谢所有的答案,但是,如果我修改C C::instances;
为C C::instances(0,0);
我会得到另一个错误: $ c++ inherit.cpp /tmp/cctw6l67.o: In function C::C(int, int)':
inheritance.cpp:(.text._ZN1CC2Eii[_ZN1CC5Eii]+0x1b): undefined reference to
A::A(int, int)' collect2: ld returned 1 exit status
知道为什么吗?以及如何解决?
谢谢