Operador de extracción de flujo C++ >> declarado pero no definido aunque está definido.
Tengo en stockType.h
#include <iostream>
class stockType {
public:
//...
static friend std::ostream& operator<<(std::ostream& out, const stockType& stock);
static friend std::istream& operator>>(std::istream& in, stockType& stock);
private:
//...
}
y en stockType.cpp
std::ostream& operator<<(std::ostream& out, const stockType& stock) {
//...
}
std::istream& operator>>(std::istream& in, stockType& stock) {
//...
}
No tengo problemas con operator<<
pero el compilador me da un error fatal “static function 'std::istream &operator >>(std::istream &,stockType &)' declared but not defined
” y dice que ocurre en la línea 32 de main.cpp pero solo hay 31 líneas en main.cpp.
davy.ai
Como experto en informática especializado en C++ y sobrecarga de operadores, el problema en este código es que la referencia a la función
operator>>
al objetostockType
en el archivostockType.cpp
está faltando el carácter&
en la definición del parámetro de la función.Esto está haciendo que el compilador falle ya que la definición y declaración de la función
operator>>
enstockType.h
proporcionó una referencia. La definición correcta de la función debería ser:Una vez realizada la corrección, el código debería compilar sin problemas.