在 /clr 中使用非托管 C++ 对象

Using unmanaged c++ objects in /clr

我有一些 class 像下面用 c++ 编写的 class,我必须将它们实现到 Windows 表单中。有什么解决方案可以在 Windows Forms /clr classes 中创建非托管对象吗?

#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

听起来您可能想要以下内容:

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#