我有一个班级酒吧:
class Bar
{
public:
Bar(void);
~Bar(void);
};
还有一个类Foo,它将对象的引用Bar作为构造函数参数并需要将其保存在私有成员中bar_:
class Foo
{
private:
Bar& bar_;
public:
Foo(Bar& bar) : bar_(bar) {}
~Foo(void) {}
};
这不编译:
在“Foo”中找不到重载的成员函数
缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
现在我怀疑我需要保证的几件事,第二个错误是Bar& bar_;在Foo. 声明时是否需要使用显式构造函数bar_?
我有兴趣了解编译器在这个问题上是如何工作的,因此非常感谢详细的解释。
谢谢。
编辑
好的,我正在发布一个新代码,因为我的代码显然没有任何问题。
Parser.h:
#pragma once
class Parser
{
private:
std::istream& inputStream_;
Analyzer& analyzer_;
public:
Parser(std::istream &inputStream, Analyzer& analyzer);
~Parser(void);
};
Parser.cpp:
#include "stdafx.h"
#include "Parser.h"
#include "Analyzer.h"
Parser::Parser(std::istream &inputStream, Analyzer& analyzer ) : inputStream_(inputStream), analyzer_(analyzer) {}
Parser::~Parser(void) {}
Analyzer.h:
#pragma once
class Analyzer
{
public:
Analyzer(void);
~Analyzer(void);
};