2009-04-13 8 views
0

Hi ich erstelle eine Datentabelle in C++ wie folgt
Wenn ich versuche, die Instanz zu erstellen, erhalte ich einen Fehler bei der Kompilierung, da ich keine Instanz für die abstrakte Klasse erstellen kann. Hier verwende ich kein abstraktes Keyword.Wie instanziiert eine verwaltete Klasse in 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

Auf welche Zeile zeigt der Fehler? – Blorgbeard

+0

Wenn Sie das nächste Mal einen Code eingeben, geben Sie ihn bitte mit 4 Leerzeichen ein oder markieren Sie ihn einfach und klicken Sie auf die kleine Schaltfläche "101010" in der Symbolleiste des Editors. – Blorgbeard

Antwort

0

Sie haben wahrscheinlich nicht Mitglieder in Ihrer Schnittstellen implementieren (IListSource erfordert GetList Methode), und daher ist die Klasse abstrakt, bis Sie (oder Unterklasse und implementieren dann) implementieren die fehlenden Methoden.

Verwandte Themen