【发布时间】:2011-02-20 15:39:28
【问题描述】:
我是 C++ 新手,下面提到的是问题的摘要。 Bar 的构造函数需要显式调用 foo 的构造函数,并且 foo 的构造函数的参数必须是 baz 的对象,baz 具有默认构造函数。我不允许使用 new 运算符(动态分配)来实现这一点。我尝试了下面的代码,但 C++ 编译器给了我编译错误(如下所列)。有人可以解释一下这段代码出了什么问题吗?非常感谢任何帮助。
//Constructor.cpp
#include <iostream>
using namespace std; // two of two, yay!
class baz {
public:
baz() { };
};
class Foo {
public:
Foo(baz y) { }
};
class Bar {
public:
Foo x;
baz y;
Bar() : Foo(y) { };
};
int main() {
Bar b;
}
Syntax Error on compiling.
--------------------------
constructor.cpp: In constructor `Bar::Bar()':
constructor.cpp:19: error: type `Foo' is not a direct base of `Bar'
constructor.cpp:19: error: no matching function for call to `Foo::Foo()'
constructor.cpp:9: note: candidates are: Foo::Foo(const Foo&)
constructor.cpp:11: note: Foo::Foo(baz)
【问题讨论】:
-
第一堂课后少了
;。 -
对不起,我的错。添加了分号。
标签: c++ constructor oop