У меня есть класс Bar:Пользовательский объект класса в списке инициализации
class Bar
{
public:
Bar(void);
~Bar(void);
};
и класс Foo
, который получает ссылку на Bar
объект в качестве параметра конструктора и нужно, чтобы сохранить его в частном члена bar_
:
class Foo
{
private:
Bar& bar_;
public:
Foo(Bar& bar) : bar_(bar) {}
~Foo(void) {}
};
Это не компилируется:
Ove Функция rloaded member не найдена в 'Foo'
Отсутствует спецификатор типа - int. Примечание: C++ не поддерживает по умолчанию-ИНТ
Теперь я подозреваю, несколько вещей, которые мне нужно, чтобы гарантировать, то вторая ошибка для Bar& bar_;
декларации в Foo
. Нужно ли использовать явный конструктор при объявлении bar_
?
Мне интересно узнать, как работает компилятор по этому вопросу, поэтому подробное объяснение будет высоко оценено.
Спасибо.
EDIT
Хорошо я отправляю новый код, так как, по-видимому, не было ничего плохого с моим кодом. 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);
};
Что такое 'Parser'? –
Код в порядке (помимо отсутствующих определений c-tor и d-tor бара), в сообщении об ошибке упоминается 'Parser' - что это такое? – jrok
Это компилирует - http://ideone.com/caFF2 –