2009-10-29 8 views
0

Je dois passer un de mes paramètres à une fonction write(). Il demande un type de 'const void *' Je suis un gars PHP et je ne connais pas très bien le C++.Conversion de variable C++

Voici mon paramètre:

const fmx::Text& distance = dataVect.AtAsText(3); 

Je ne connais pas d'autre moyen de tirer dans ce domaine. Je voudrais juste le déclarer const void * mais je ne sais pas comment.

Je suppose qu'il suffit de convertir ce serait plus facile que d'essayer de le tirer de la bonne façon?

Le message d'erreur: ne peut pas convertir const fmx :: Texte à const void * pour l'argument 2

write(fd, distance, 4); 

Je sais que cela a fonctionné si je peux simplement convertir?

const void* s = "5000"; 

Ceci est pour un plugin dans FileMaker donc je n'ai pas vraiment de C++ ici.

Y a-t-il plus de personnes qui pourraient m'aider à résoudre ce problème?

Merci beaucoup!

Répondre

1

Je ne connais pas vraiment le filemaker, mais this link montre que fmx :: Text a une fonction GetBytes. Vous pouvez ensuite passer le pointeur au tampon rempli de cette fonction.

2

Si fmx :: Text était un type de pointeur, le compilateur convertissait automatiquement une référence en void*. Vous devez utiliser l'adresse de l'opérateur pour donner la fonction d'un pointeur de travailler avec:

write(fd, &distance, 4); 
0

Je suppose que vous voulez vraiment la chaîne de texte.

Je pense que vous devez vérifier l'API pour fmx :: Text pour obtenir la chaîne que vous voulez. Here est quelque chose que j'ai trouvé pour sortir la chaîne.

Attend comme le type stocke les données sous forme de UTF16, de sorte que vous devez exécuter un peu de code pour obtenir une ficelle, puis passez à votre fonction d'écriture:

//a function to convert to a normal string 
std::string getString(fmx::Text& Text) 
{ 
    char buffer[512] = {0}; //NOTE YOU HAVE A STRING SIZE LIMIT 

    // convert original text to ASCII text 
    outText.GetBytes(buffer, sizeof(buffer)-1, 0, Text.GetSize(), fmx::Text::kEncoding_Native);  

    return buffer; 
} 

appeler ensuite la fonction

std::string myString = getString(distance); 
write(fd, myString.c_str(), myString.size()); 

note Je suppose beaucoup ici ... que vous voulez une chaîne dans le codage en cours, et non les données brutes UTF16 de «distance». ET que GetBytes ne réduira pas les caractères null dans le tampon ....

Vous devrez également inclure < chaîne > dans votre fichier C++.