Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pointeurs et structure [ Système / Mémoire ] (olibara)

samedi 9 février 2008 à 10:11:13 | pointeurs et structure

olibara

Bonjour,

Je sais que bidou va encore me dire de faire de la speleo essai / erreur sur MSDN mais c'est tellement plus rapide et convivial qsuand on peut partager l'experience des autres !!

J'essaye de comprendre le message ci dessous provoqué par la compilation du code un peu blus bas.

Error 1 An object reference is required for the nonstatic field, method, or property
'BCGeo.BCGEO_C.DistWGS(BCGeo.TS_POINT, BCGeo.TS_POINT)'

Et deduire ce que je dois faire ou j'aurais du faire pour l'eviter !!
Explication : j'ai transposé une de mes sources en C pur, la fonction originale utilisait un pointeur sur sructure de type TS_POINT, redéfinie ci dessous;

j'ai créé un namespace et une classe pour pouvoir utiliser une jeu de fonction géographique dans différent projets.

Ci dessous; en vert l'essentiel de ma classe
en bleu l'appel de la fonction dans mon projet

Je recoit l'erreur ci dessus
- dois je changer qquelque chose dans ma classe
- dois je changer l'appel ?


namespace BCGeo
{
  public struct TS_POINT
  {
    public int X;
    public int Y;
  };

  public class BCGEO_C
  {
    public int DistWGS(TS_POINT A, TS_POINT B)
    {
      return dist;
    }
  }
}


using BCgeo;

      TS_POINT pa,pb;

      pa.X = minX;
      pa.Y = minY;
      pb.X = maxX;
      pb.Y = minY;

      dX = BCGEO_C.DistWGS(pa, pb);

Error 1 An object reference is required for the nonstatic field, method, or property
'BCGeo.BCGEO_C.DistWGS(BCGeo.TS_POINT, BCGeo.TS_POINT)'


samedi 9 février 2008 à 10:22:26 | Re : pointeurs et structure

bidou_01

Hello,

Ton erreur vient du faite que tu appelles la méthode "public int DistWGS(TS_POINT A, TS_POINT B)"
comme une méthode statique : dX = BCGEO_C.DistWGS(pa, pb);

Or ta méthode n'est pas statique.

Soit tu rajoute le mot clé static : public static int DistWGS(....); , ainsi tu conserve ta syntaxe d'appel de la méthode!

Soit tu instancies un objet de type BCGEO_C pour appeler ta méthode :

BCGEO_C objet = new BCGEO_C();

objet.DistWGS(monPt1,monPt2);

PS : et s'il m'arrive de renvoyer sur la MSDN c'est parce qu'on apprend toujours plus par soi-même, mais avec des pistes de recherche ;). Un code pondu ne sert à rien !

Cordialement,

Bidou_01
 


[ Lien ]

samedi 9 février 2008 à 10:28:11 | Re : pointeurs et structure

Bidou

Administrateur CodeS-SourceS
bidou_01> Sur le forum, Bidou, c'est moi, pas toi
olibara> Pour les struct C#, je tiens à te signaler (au cas où tu ne le saurais pas) qu'elles n'ont rien avoir avec les struct en C !



-My Blog-

samedi 9 février 2008 à 10:42:15 | Re : pointeurs et structure

olibara

Merci

Personellement la declaration statique me semble plus simple

C'est une collection de fonctions de calcul et de definition de structures appropriées ?
Quel serait l'avantage de l'instancier plutot que de tout déclarer statique ?

N.B : rassure toi j'aime apprendre par moi meme mais le vite possible et dans ce cas l'avis avisé de quelqu'un permet de degager les pistes beaucoup plus efficacement.

samedi 9 février 2008 à 10:45:42 | Re : pointeurs et structure

Bidou

Administrateur CodeS-SourceS
le mot clef statique va à l'encontre du paradygme de la programmation orienté object, et il faut donc l'utilisé partimonieusement et pas à tord la rigole...
Si tu dois faire une classe "Utility", alors oui, une classe static (qui ne peut contenir que des membres static) peut être une bonne solution...


-My Blog-

samedi 9 février 2008 à 10:47:43 | Re : pointeurs et structure

Bidou

Administrateur CodeS-SourceS
Pour ce qui est des structs C#, il faut savoir que c'est des value type qui sont donc stocké sur le stack et pas sur le heap. Si tu travailles avec des collections, ou dans des cas ou y'a beaucoup de boxing/unboxing, tu risques d'avoir des problèmes de performances...



-My Blog-

samedi 9 février 2008 à 10:48:04 | Re : pointeurs et structure

olibara

 heu

Bien sur bidou c'est toi
Mais je ne saisis pas la remarque : je ne pense pas me faire passer pout toi ?

Structures C#

Oui j'ai bien compris que la gestion des structures C# est différente que en C,

Entre autre on n'a plus la liberté de decider de passer un pointeur ou le contenu

Mais je dois encore me faire la main sur les diverses nuances d'utilisation.

 

 


samedi 9 février 2008 à 10:51:32 | Re : pointeurs et structure

Bidou

Administrateur CodeS-SourceS
olibara> Je m'adressais pas à toi dans cette phrase là, mais au membre "bidou_01" qui t'as répondu en premier sur cette question...

bidou_01> Tu vois, tout le monde se fout dedans à cause de toi  


-My Blog-

samedi 9 février 2008 à 10:58:43 | Re : pointeurs et structure

bidou_01

loooooooool

Desolé :'(

Cordialement,

Bidou_01
 


[ Lien ]

samedi 9 février 2008 à 13:12:29 | Re : pointeurs et structure

Lutinore

Administrateur CodeS-SourceS

"Entre autre on n'a plus la liberté de decider de passer un pointeur ou le contenu .."

Si, par défaut on passe la struct par valeur, avec le mot clé ref ou avec un pointeur on passe l'adresse de la struct.


Bidou_02




Cette discussion est classé dans : public, pa, ts, bcgeo, distwgs


Répondre à ce message

Sujets en rapport avec ce message

Pb avec mon programme - help... [ par adrien78 ] Voici les sources de mon programme il bug :// project created on 09/11/2002 at 10:51// By Adrien HADJ SALAH// http://www.informatick.com// Pour me rem Accès [ par fredza ] Bonjour et bonne année à toutes et tous,J'ai un fichier ip.cs voilà brièvement son contenu :namespace iprog{ /// /// Description résumée de ip. /// Conversion API Win32 -> C# [ par merlintintin ] J'aimerais utiliser des fonctions de l'APIen C#. Il faut pour cela redefinir les fonctions et les structures de l'API en C#. Malheureusement, je ne sa split dans une Chaine [ par fmerlin ] Je lit un fichier txt a l'aide d'un streamreader j'essaye de decouper chaque ligne trouver avec la fonction split, si jexecute une boucle pour balayer La référence d'objet n'est pas définie à une instance d'un objet. [ par kinderman81 ] Salut,Je souhaite ajouter des objets "Concessionnaire" dans un vecteur ArrayList (qui est la liste des concessionnaires): Celui-ci est l'objet Collect classe static dans classe static [ par linx20 ] Voila en gros je veux inclure une classe static ds mon autre classe static : public abstract class MaClasseStatic1{public static MaClasseStatic2 st2;/ TcpClient et TcpListener une est dérivée l'autre incluse dans une class [ par Trollien ] Bonjour,je commence à pété un cable car je ne comprend pas trop ce qui ce passe alors voici les deux sources et un bout de code de l'appli.Si qqn a un Creer et enregistrer une dll .net pour l'utiliser en ASP [ par Kev33 ] Bonjour,J'essai de creer une dll en .net et de l'enregistrer avec la commande "regsvr32 madll.dll"mais j'ai une erreur : "madll.dll a été chargé mais L'objet et moi [ par tobleronne ] Bonjour,J'ai fait une classe et j'arrive pas a y acceder dans une autre.Ma classe general.cs : ---------------------------public class general{public serialisation [ par zaka48 ] je voudrai serialiser un objet "etudiant" sous cette forme xxxxxx<DateDe


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.