我有一个班级酒吧:
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);
};