IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

error : "invalid use of non-statics"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Par défaut error : "invalid use of non-statics"
    Bonjour,

    J'inclus une lib et un header issu du projet 'openkinect'.
    Dans les exemples proposés ils utilisent beaucoup les variables globales que ce soit en c ou en c++.

    Je veux faire du vrai objet avec des constructeurs, des pointeurs intelligents ...

    Je me suis donc écrit une classe basée sur les exemples proposés mais je me retrouve avec presque tous mes membres en statics de partout.
    Si mes variables/fonctions ne sont plus static dans la classe, le compliateur me jette avec :

    "invalid use of non-statics member function"

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Kinect::init_loop() {
     
        int freenect_angle = 0;
        freenect_set_tilt_degs(f_dev,freenect_angle);
        freenect_set_led(f_dev,LED_RED);
     
        freenect_set_depth_callback(f_dev, depth_cb);
     
        freenect_set_depth_mode(f_dev, freenect_find_depth_mode(FREENECT_RESOLUTION_MEDIUM, FREENECT_DEPTH_11BIT));
     
        freenect_start_depth(f_dev);
    }
    depth_cb doit être static sinon ça ne complie pas :-(

    Je me retrouve aussi avec des pointeurs où je fais un malloc en dehors du constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uint8_t *Kinect::rgb_back = (uint8_t*)malloc(WIDTH*HEIGHT*3);
    J'ai l'impression de lire du c et non plus du c++, comment faire ? Merci

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Tu ne peux pas faire référence à des données membres au sein d'une fonction static sans lui passer une instance de la classe. Peux-tu nous montrer la définition de ta classe ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Salut,

    c'est une API en C, les plus simples à utiliser imo.
    Il n'y a aucune obligation de static, faut juste être logique et respecter les règles du langage. Une fonction membre ne s'appelle que sur une instance, une fonction static n'a pas d'instance.
    Sauf indication contraire malloc n'a rien d'obligatoire, tout ce que la lib attend c'est un pointeur vers des données contigües. Elle ne se charge à priori pas de leur libération, elle emprunte le pointeur que tu lui donnes. Si tu veux les fournir via malloc, new, vector, array, ... c'est libre à toi.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Erreur : invalid use of non-static data member
    Par KonTiKI dans le forum Débuter
    Réponses: 3
    Dernier message: 03/10/2016, 17h51
  2. [XL-2010] Error 94, Invalid use of Null
    Par bundy_al01 dans le forum Excel
    Réponses: 1
    Dernier message: 09/03/2011, 09h30
  3. error:invalid use of undefined type
    Par assif dans le forum C++
    Réponses: 2
    Dernier message: 25/10/2006, 21h11
  4. [VB6] Compile error: Invalide use of New Keyword
    Par ironik dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/05/2006, 12h40
  5. [FOP] [ERROR] non-static variable this cannot be referenced from a static context
    Par cash3000 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/05/2006, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo