2009-04-13 7 views
0

Salut je crée un Datatable en C++ comme suit
quand j'essaye de créer l'instance j'obtiens une erreur de temps de compilation comme ne peut pas créer l'instance pour la classe abstraite. ici je ne suis pas en utilisant un mot-clé abstrait.Comment instancier une classe managée en C++ (DATATABLE)?

#include "stdio.h" 
#include "conio.h" 
#using <mscorlib.dll> 
using namespace System::Data; 
using namespace System::ComponentModel; 
using namespace System; 

[Serializable] 
public __gc class Table :public MarshalByValueComponent,public IListSource,public ISupportInitialize,public System::Runtime::Serialization:: ISerializable 

{ 
public: 
    void MakeTable(); 
void main() 
    { 
    Table *s=new Table(); 
    s->MakeTable(); 
    Console::WriteLine("Hai"); 
    printf("hello"); 
    getch(); 
    } 
}; 
void Table::MakeTable() 
{ 

    DataSet* myDataSet; 
    // Create a new DataTable. 
    DataTable* myDataTable = new DataTable(S"ParentTable"); 
    // Declare variables for DataColumn and DataRow objects. 
    DataColumn* myDataColumn; 
    DataRow* myDataRow; 

    // Create new DataColumn, set DataType, ColumnName and add to DataTable.  
    myDataColumn = new DataColumn(); 
    myDataColumn->DataType = System::Type::GetType(S"System.Int32"); 
    myDataColumn->ColumnName = S"id"; 
    myDataColumn->ReadOnly = true; 
    myDataColumn->Unique = true; 
    // Add the Column to the DataColumnCollection. 
    myDataTable->Columns->Add(myDataColumn); 

    // Create second column. 
    myDataColumn = new DataColumn(); 
    myDataColumn->DataType = System::Type::GetType(S"System.String"); 
    myDataColumn->ColumnName = S"ParentItem"; 
    myDataColumn->AutoIncrement = false; 
    myDataColumn->Caption = S"ParentItem"; 
    myDataColumn->ReadOnly = false; 
    myDataColumn->Unique = false; 
    // Add the column to the table. 
    myDataTable->Columns->Add(myDataColumn); 

    // Make the ID column the primary key column. 
    DataColumn* PrimaryKeyColumns[] = new DataColumn*[1]; 
    PrimaryKeyColumns->Item[0] = myDataTable->Columns->Item[S"id"]; 
    myDataTable->PrimaryKey = PrimaryKeyColumns; 

    // Instantiate the DataSet variable. 
    myDataSet = new DataSet(); 
    // Add the new DataTable to the DataSet. 
    myDataSet->Tables->Add(myDataTable); 

    // Create three new DataRow objects and add them to the DataTable 
    for (int i = 0; i<= 2; i++){ 
     myDataRow = myDataTable->NewRow(); 
     myDataRow->Item[S"id"] = __box(i); 
     myDataRow->Item[S"ParentItem"] = String::Format(S"ParentItem {0}", __box(i)); 
     myDataTable->Rows->Add(myDataRow); 
    } 
+0

Sur quelle ligne l'erreur pointe-t-elle? – Blorgbeard

+0

En outre, la prochaine fois que vous postez du code, veuillez l'espacer de 4 espaces, ou mettez-le en surbrillance et cliquez sur le petit bouton '101010' dans la barre d'outils de l'éditeur. – Blorgbeard

Répondre

0

Vous ne avez probablement pas mis en œuvre dans vos interfaces membres (nécessite IListSource méthode GetList ) et donc votre classe est abstraite jusqu'à ce que vous mettre en œuvre (ou sous-classe, puis mettre en œuvre) les méthodes manquantes.

Questions connexes