Erreur étrange dans la construction de la classe c++

Meule

J'ai récemment commencé à apprendre le c++ et j'essaie maintenant de créer une classe vectorielle simple comme exercice. Mais d'une manière ou d'une autre, mon code ne semble pas fonctionner.

#include <iostream>
#include <cmath>
class Vec2
{
public:
    float x1;
    float x2;
    Vec2(float a,float b):x1(a),x2(b){}
    float norm()
    {
        return sqrt(x1*x1+x2*x2);
    }
    Vec2 operator+(const Vec2 &v)
    {
        Vec2 newv;
        newv.x1=this->x1+v.x1;
        newv.x2=this->x2+v.x2;
        return newv;
    }
};
int main()
{
    Vec2 v1(3,4);
    Vec2 v2(4,5);
    Vec2 v3=v1+v2;
    std::cout << v1.x1 << std::endl;
    std::cout << v1.norm() << std::endl;
    std::cout << v3.x1 << std::endl;
    return 0;
}

J'utilise eclipse comme éditeur et j'obtiens cette erreur lorsque je compile :

11:13:04 **** Incremental Build of configuration Debug for project Vec2 ****
make all 
Building file: ../Vec2.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Vec2.d" -MT"Vec2.o" -o "Vec2.o" "../Vec2.cpp"
../Vec2.cpp: In member function ‘Vec2 Vec2::operator+(const Vec2&)’:
../Vec2.cpp:15:11: error: no matching function for call to ‘Vec2::Vec2()’
      Vec2 newv;
           ^~~~
../Vec2.cpp:8:2: note: candidate: Vec2::Vec2(float, float)
  Vec2(float a,float b):x1(a),x2(b){}
  ^~~~
../Vec2.cpp:8:2: note:   candidate expects 2 arguments, 0 provided
../Vec2.cpp:3:7: note: candidate: constexpr Vec2::Vec2(const Vec2&)
 class Vec2
       ^~~~
../Vec2.cpp:3:7: note:   candidate expects 1 argument, 0 provided
../Vec2.cpp:3:7: note: candidate: constexpr Vec2::Vec2(Vec2&&)
../Vec2.cpp:3:7: note:   candidate expects 1 argument, 0 provided
make: *** [subdir.mk:20: Vec2.o] Error 1

11:13:05 Build Finished (took 422ms)

Je soupçonne que la surcharge de l'opérateur est le coupable ici, mais je n'arrive pas à le faire fonctionner. Toutes les idées seraient très appréciées!

de l'art

Vous pouvez soit créer un constructeur par défaut

Vec2() {}

ou vous pouvez remplacer les lignes 15-17 par

Vec2 newv(this->x1+v.x1, newv.x2=this->x2+v.x2);

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Référence étrange passant dans la construction de classe

Comportement étrange de la classe récursive dans la boucle for

Erreur étrange du compilateur dans la classe générique à l'aide de la fonction Linq ExceptBy

Erreur de chemin de classe infructueuse dans la construction de l'application Java Spring

Golang, erreur de construction dans la fonction

Comportement étrange possible dans la classe de configuration JMS

Une erreur étrange dans la fonction récursive de Fibonacci dans bash: erreur dans la sortie

Sortie étrange avec la fonction de lecture de classe C ++

Erreur de construction lors de la déclaration de tf2_ros :: Buffer dans la classe

Erreur étrange du compilateur lors de la tentative de construction de std :: thread :

Studio Android, erreur étrange lors de la construction de kotlin: code incorrect généré

cmake mingw-w64: erreur étrange lors de la tentative de construction

Erreur lors de la construction d'un tableau dynamique de threads en C ++, à l'aide de la classe de thread

Comportement étrange de la classe C ++ en Python avec SWIG

Problème étrange en C++ : impossible de trouver le membre de la fonction dans la classe

Erreur de compilation étrange sur la chaîne C #.

Erreur de syntaxe dans la classe JavaScript

erreur dans la classe de dicton "mapping"

Erreur dans la classe de gestionnaire - Laravel

Erreur de compilation dans la classe anonyme

Erreur lors de la construction de Gradle dans Android Studio

pour (let .. de) erreur dans la construction de grunt

Bug étrange de la classe interne

Étendue étrange de la classe JavaScript

Erreur de diffusion étrange MongooseJS avec le nom de la route dans l'erreur

Utiliser la classe Java dans le script de construction Gradle

La classe Java dans le fichier de construction gradle échoue

Conflit de choix ERREUR JAVACC dans la construction (...) *

erreur node-sass lors de la construction dans Docker

TOP liste

chaudétiquette

Archive