У меня есть следующий код:Нет известно преобразование из станд :: ostream * в STD :: ostream &
class A {
public:
...
C *func() { ... }
void func2() { ... }
...
};
class B {
public:
...
B(std::ostream &s, A *curr);
...
};
class C {
public:
...
ostream *stream;
...
}
void A::func2() {
...
std::ostream *astream = func()->stream;
B *env = new B(astream, this);
...
}
Однако я получаю следующее сообщение об ошибке на B *env = new B(astream, this);
линии:
myfile.cc:680:86: error: no matching function for call to ‘B::B(std::ostream*&, A* const)’
myfile.cc:680:86: note: candidates are:
myfile.h:194:2: note: B::B(std::ostream&, A*)
myfile.h:194:2: note: no known conversion for argument 1 from ‘std::ostream* {aka std::basic_ostream<char>*}’ to ‘std::ostream& {aka std::basic_ostream<char>&}’
I «Не знаю, как решить эту проблему, и был бы признателен за любой вклад.
Ого я чувствую немой. Конечно ... Спасибо. И да, код, как он есть (в вопросе), не имеет смысла, я знаю: P –
@AlexBrooks Я имел в виду, что это комментарий, что нет смысла хранить указатель на поток. Вам нужна очень хорошая причина. Возможно, вы делаете это, потому что вы не знаете о списках инициализации в конструкторе. – paddy