es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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 objeto stockType en el archivo stockType.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>> en stockType.h proporcionó una referencia. La definición correcta de la función debería ser:

    std::istream& operator>>(std::istream& in, stockType& stock) {
        //...
    }
    

    Una vez realizada la corrección, el código debería compilar sin problemas.

Comments are closed.