2016-01-25 1 views
0

Я определяю в классе А < < оператор так: Ах:не может связывать 'станд :: basic_ostream' именующая к 'станд :: basic_ostream <char> &&'

class API_name A { 
    friend API_name std::ostream& operator<<(std::ostream& o, const A&a); 
} 

a.cpp:

ostream& operator<<(ostream& o, const A& a); 

в другом файле, включая Ах, я хочу сделать это:

void fonction(const A* a) { 
    std::cout << "a contains : " << *a << std::endl; 
} 

На этой линии, я НКА возвращает следующую ошибку:

ошибка: не может связывать «станд :: basic_ostream» именующие к «станд :: basic_ostream & &»

Может кто-нибудь сказать мне, почему и как этого избежать ошибка компиляции?

ответ

1

Вы friend определение ошибочно опущен &:

То есть,

class API_name A { 
    friend API_name std::ostream& operator<<(std::ostream o, const A&a); 
} 

должен быть

class API_name A { 
    friend API_name std::ostream& operator<<(std::ostream& o, const A&a); 
} 
+0

и находится в определении упоминалось. Я сделал ошибку ввода, когда я писал вопрос, и я получаю эту ошибку компиляции. – FlashMcQueen

+0

@FlashMcQueen: Тогда проблема не в коде, который вы опубликовали, по крайней мере, насколько мы можем видеть. Вам может потребоваться опубликовать [mcve]. Например, что такое '' имя_процессора'' и как ваши классы и функции расположены в пространствах имен? – AndyG

+0

ОК, я сделаю это. – FlashMcQueen

0

Ваше определение и реализация функции не совпадают.

  • хиджры: std::ostream& operator<<(std::ostream o, const A&a);
  • a.cpp: stream& DTL::operator<<(ostream& o, const A& a);

Ваш файл хиджры необходимо изменить, чтобы: std::ostream& operator<<(std::ostream& o, const A&a);

 Смежные вопросы

  • Нет связанных вопросов^_^