Ok les gars, nous savons tous qu'il y a beaucoup de questions typedef/struct là-bas, mais je pense que celui-ci est un peu un esprit bender. Je simule les interactions voisines d'un réseau cristallin en utilisant strictement C. J'ai une structure appelée "ball_struct" que j'ai typé comme "ball". La structure contient un pointeur vers une liste de ball_structs (puisque je ne pouvais pas utiliser le nom typedef avant sa propre déclaration) que la balle considère ses voisins.Référencer un typedef comme struct homologue
Donc, voici la capture: Je veux ajouter des balles à cette liste de la liste des voisins ball_struct. Quand je compile (dans Visual Studio 2009, pas de support CLR) je reçois:
error C2440: '=' : cannot convert from 'ball *' to 'ball_struct'
Je ne suis pas surpris, mais je suis perplexe. Existe-t-il un moyen de redéfinir le typedef à sa structure respective? Sinon, est-ce que je peux ajouter une "boule" à une liste "ball_struct" donc je ne dois pas enlever le typedef et coller les mots-clés "struct" partout dans mon code? Voici le code en question:
Le struct/typedef:
typedef struct ball_struct
{
double mass;
vector pos, vel, acc;
/* keep list of neighbors and its size */
struct ball_struct *neighbors;
int numNeighbors;
} ball;
Et la fonction erronée:
/* adds ball reference to the neighbor list of the target */
void addNeighbor(ball *target, ball *neighbor)
{
int n = target->numNeighbors;
target->neighbors[n] = neighbor; // error C2440
target->numNeighbors = n+1;
}
Merci, toute aide est appréciée. Rappelez-vous, seulement des solutions pour C s'il vous plaît.
Vous pourriez écrire: 'typedef struct ball_struct ball; 'et ensuite' struct ball_struct {...; balle * voisins; ...}; ' –