J'obtiens une erreur "La référence de membre non statique doit être relative à un objet spécifique" dans un projet DLL C ++

Faucheuse9806

Je travaille sur un projet DLL, j'écris une classe avec des variables et des fonctions dans un en-tête et les définitions dans un fichier .cpp comme ceci:

.h:

#ifndef RE_MATH_H
#define RE_MATH_H
#ifdef MATHFUNCSDLL_EXPORTS
#define RE_MATH_API __declspec(dllimport) 
#else
#define RE_MATH_API __declspec(dllexport) 
#endif
#define PI 3.14159265358979323846

namespace RE_Math
{
    class RE_MATH_API Point
    {
        public:
            double X;
            double Y;
            double Z;
            float alpha;

            Point(double x, double y, double z, float a);
            static void getPoint(double x, double y, double z, float a);
    };
}

et le .cpp:

#include <re_math.h>

namespace RE_Math
{
    Point::Point(double x, double y, double z, float a)
    {
        X = x;
        Y = y;
        Z = z;
        alpha = a;
    }

    void Point::getPoint(double x, double y, double z, float a)
    {
        x = X;
        y = Y;
        z = Z;
        a = alpha;
    }
}

OK, donc dans le constructeur, je n'ai aucun problème, mais dans la getPoint()fonction j'obtiens l'erreur "la référence de membre non statique doit être relative à un objet spécifique" et cela ne me permettra pas d'utiliser les variables. J'ai essayé de rendre les variables statiques, mais cela me donne des erreurs de symboles externes non résolues aux mêmes endroits, dans getPoint (). Que dois-je faire pour résoudre ce problème?

James Adkison

ça ne me laissera pas utiliser les variables

Vous ne pouvez pas accéder X, Y, Zet à alphapartir Point::getPointparce que la getPointfonction est statique. Une fonction membre statique ne peut pas accéder aux membres de données d'instance, mais elle peut accéder staticaux membres de classe.

J'ai essayé de rendre les variables statiques, mais cela me donne des erreurs de symboles externes non résolues

Vous ne pouvez pas rendre les membres statiques en ajoutant simplement le staticmot - clé, vous devez également les définir (par exemple, double Point::X;).

Que dois-je faire pour résoudre ce problème?

Rendez la getPointfonction non statique et mettez-la à jour pour utiliser des références.

void Point::getPoint(double& x, double& y, double& z, float& a)
{
    x = X;
    y = Y;
    z = Z;
    a = alpha;
}

Si vous n'utilisez pas de références pour les paramètres, les modifications sont perdues une fois la fonction terminée car les paramètres sont passés par valeur (c'est-à-dire, ce sont des copies des originaux), ce qui modifie des variables temporaires qui n'existent que dans le cadre de la getPointfonction .

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

TOP liste

  1. 1

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  2. 2

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    knn classification 10 plis de l'outil et du tri

  5. 5

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  6. 6

    Créer un système Buzzer à l'aide de python

  7. 7

    Fonction de puissance en Java

  8. 8

    opérations en virgule flottante dans go

  9. 9

    Comment définir la couleur de l'intersection dans un diagramme de Venn?

  10. 10

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  11. 11

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  12. 12

    AutoMapper.Collection.EFCore - Erreur générée lors de la configuration

  13. 13

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  14. 14

    Comment remplir les valeurs manquantes avec plusieurs colonnes dans R

  15. 15

    Comment puis-je ajouter un UIView sous mon contrôleur de barre d'onglets par programme?

  16. 16

    Yat-il un référentiel maven application Java à démarrer rapidement 11

  17. 17

    Comment rechercher des éléments dans une ArrayList? - Java

  18. 18

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  19. 19

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  20. 20

    Sélectionnez le bouton radio sur la saisie de texte

  21. 21

    Placez le modeBar en haut au centre à l'aide de plotly.js

chaudétiquette

Archive