2009-09-30 10 views
0

Je travaille dans Visual C++. Je donne commande suivanteVisual C++ déclarant un tableau de chaînes

String nodename[100]; 

mais cette commande donne l'erreur suivante

"Erreur: 'System :: String': un réseau natif ne peut pas contenir cette gestion de type"

Alors, que dois-je faire maintenant?

+3

Si vous ne savez pas ce que les tableaux natifs et types gérés sont, vous ne devriez probablement pas embêter avec C++ géré du tout et utiliser C# à la place :) – Thomas

Répondre

3

Si vous souhaitez écrire une application C++ native, vous ne pouvez pas, comme l'indique l'erreur, utiliser des types gérés.

Cela signifie que vous devez utiliser la classe de chaîne C de,

#include <string> // at the top of the file 
std::string nodename[100]; // where you want to declare the array 

au lieu de System::String. En revanche, si vous souhaitez créer une application C++/CLI gérée, vous ne pouvez pas utiliser les baies natives. (Mais peut utiliser tous les types .NET)

+0

la commande ci-dessus donne l'erreur suivante « std »: est pas un nom de classe ou d'espace de nom –

+1

Ensuite, vous n'avez pas ajouté la partie '# include' correctement. Mettez cela au tout début du fichier. – jalf

+0

et il est chaîne, pas string.h – jalf

3

Vous ne dit pas si vous voulez GÉRÉ C++, C++/CLI, ou non géré C++

gérés

C++

http://www.codeproject.com/KB/mcpp/csarrays01.aspx

C++/CLI

http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

C++ non géré (standard C++)

std :: string nodename [100]; // utilise la chaîne STL, pas .NET String

+0

je veux utiliser non géré C++ std :: string nodename [100]; cette commande donne une erreur de suivi même si j'utilise #include "string.h" également 'std': n'est pas un nom de classe ou d'espace de nom –

+1

#include

0

OK. Tout d'abord, il semble que vous utilisez géré C++ (ick). Deuxièmement, vous essayez de déclarer un tableau de chaînes (pas de caractères, mais des chaînes entières). Est-ce vraiment ce que vous voulez faire? Etes-vous sûr de ne pas vouloir quelque chose comme char nodename[100] ou simplement String nodename? Si vous voulez vraiment un tableau de chaînes, il semble que le compilateur souhaite que vous utilisiez l'un de ses types vectoriels managés pour le faire, ou que vous n'utilisiez que des types non gérés pour le faire.

0
#include "stdafx.h" 
#include <conio.h> 
#include <string> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    string name[5] = {"Marco","Jenna","Alex","Dina","Allyson"}; 
    int index = 5; 

    printf("List:\n\n"); 
    for (int i = 0; i < index; i++) 
    { 
     cout << name[i] << endl; 
    } 
    _getch(); 
    return 0; 
} 
+1

Pouvez-vous élaborer sur votre réponse? Publier un morceau de code sans texte n'est souvent pas très utile. –

Questions connexes