2017-05-15 54 views
-3

我已經有了一些類,如下面用C++編寫的類,我必須將它們實現到Windows窗體中。有沒有解決方案可以在Windows Forms/clr類中創建非託管對象?在/ clr中使用非託管C++對象

#pragma once 
#ifndef _HOTEL_H 
#define _HOTEL_H 
#include "Room.h" 
#include "Adress.h" 
#include "Employee.h" 
#include "Apartament.h" 
#include "TechnicalRoom.h" 
#include "RecreationRoom.h" 
#include <vector> 
#include <string> 


using namespace std; 

class Hotel { 
protected: 
int HotelID, HotelStars, NumberOfEmployee, NumberOfClients, NumberofRooms; 
string HotelName; 
Adress HotelAdress; 
vector <Room*> Rooms; 
vector <Person*> People; 
public: 

//methods 
Hotel(int = 3, string = "Hotel"); 
~Hotel(); 
string getName(); 
int getNumberOfClients(); 
int getNumberOfEmployee(); 
int getHotelStars(); 
void changeNumberOfStars(int); 
void BookApartament(int, int); 
void AddRoom(int); 
void DeleteRoom(int); 
void AddEmployee(); 
void DeleteEmployee(int); 

friend ostream & operator<< (ostream &out, Hotel &h); 
friend ref class MainWindow; 
}; 
#endif 
+0

你究竟在做什麼? C++/CLI可用於在本機C++代碼和其他.NET語言(如C#)之間進行互操作。請注意,C++/CLI不打算用於WinForms開發。 –

+0

我必須在Windows窗體中使用該類的對象並使用它們的方法 –

回答

0

這聽起來像你可能想沿着線的東西:

namespace SomeCompany 
{ 
    public ref class Hotel 
    { 
     ::Hotel* pHotel; 
     public: 
      Hotel() : pHotel(new ::Hotel()) {} 
      ~Hotel() { 
       delete pHotel; 
       pHotel = nullptr; 
      } 
      !Hotel() { 
       delete pHotel; 
      } 
      // ... etc. ... 
    }; 
} 

欲知更多詳情,請參見How to: Wrap Native Class for Use by C#

+0

是的,但是我應該在哪裏插入此代碼?對不起,我是初學者:/ –

+0

使用C++/CLI需要對C++和C#。/ .NET有很好的瞭解。你也應該創建一個[mcve],爲了這個問題的目的,AddRoom()和AddRoom()沒有區別。 –

+0

我知道它,但我的大學要求從我知道如何做到這一點,並給我沒有幫助 –