2010-10-15 4 views
0

J'ai un problème simple avec les pointeurs. Voici mon code:C++ et multi pointeurs

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    typedef float RtPoint[3]; 
    RtPoint** b = new RtPoint*[4]; 
    b[0] = (RtPoint*)new RtPoint; 
    RtPoint* p = b[0]; 
    RtPoint c; 
    (*p)[0] = &(c[0]); 
    (*p)[1] = &(c[1]); 
    (*p)[2] = &(c[2]); 
    std::cout << p[1] << " " << &(c[0]) << std::endl; 
    delete[] b; 

    return 0; 
} 

Je veux juste mettre en p[0], p[1] et p[2] l'adresse de c[0], c[1] et c[2]. Mon code est faux mais je n'ai pas trouvé de solution.


Désolé ma faute ce code fonctionne :)

typedef float RtPoint[3]; 
    RtPoint** b = new RtPoint*[4]; 
    b[0] = (RtPoint*)new RtPoint; 
    RtPoint c; 
    b[0] = &c; 

Edit: oui, je l'ai vu mon erreur

+0

Votre code est un vrai bordel. Si vous dites quel est votre problème plus général, je vais essayer d'aider –

+2

Sans oublier, que voulez-vous dire par "mon code est faux"? Est-ce qu'il échoue à compiler (quels sont les messages de diagnostic)? Est-ce qu'il ne fonctionne pas (et quel message de terminaison obtenez-vous)? Cela donne-t-il des réponses inattendues (et de quoi s'agit-il)? –

+0

Le PO a ajouté des réponses ci-dessous avec plus d'informations, et semble penser que le problème est résolu. – Bill

Répondre

3

Si vous faites C++, oublier les pointeurs premières, et utiliser le std ::vecteur.

Mais si vous vraiment insiste sur le fait:

#include <iostream> 
#include <vector> 
using namespace std; 

int main() 
{ 
    typedef float RtPoint[3]; 
    RtPoint** b = new RtPoint*[4]; 
    b[0] = (RtPoint*)new RtPoint; 
    RtPoint* p = b[0]; 
    RtPoint c; 
    (*p)[0] = c[0]; 
    (*p)[1] = c[1]; 
    (*p)[2] = c[2]; 
    std::cout << p[1] << " " << &(c[0]) << std::endl; 
    delete[] b; 
} 

Par ailleurs, vous ne l'avez pas initialiser une variable.

+0

Veuillez formater votre code en plaçant quatre espaces au début de chaque ligne ou en utilisant le bouton "code" dans la barre d'outils. (Je suis allé et fait cela pour vous ici.) –

+0

merci. je viens de le faire –