На этом шаге мы приведем программу, реализующую указанное преобразование.
Текст программы приведен ниже, а результат - на рисунке 1.
// 224_1.cpp: главный файл проекта. #include "stdafx.h" #include <conio.h> #include <vcclr.h> using namespace System; #pragma managed class StringWrapper //managed-класс { private: gcroot < String^ > x; public: //метод присваивает private-члену х класса //(т.е. дескриптору) адрес строки "ManagedString" //в управляемой куче:* StringWrapper() { String^ str = gcnew String("ManagedString"); x = str; } //метод-член класса присваивает переменной //targetStr значение дескриптора х, который //указывает на строку "ManagedString", и выводит //эту строку: void PrintString() { String^ targetStr = x; Console::WriteLine("StringWrapper::x == {0}", targetStr); } }; #pragma unmanaged void main() //native-функция { StringWrapper s; //s-переменная managed-типа s.PrintString(); //печать строки "ManagedString" _getch(); }
Рис.1. Результат работы managed-типа в native-функции
Со следующего шага мы начнем рассматривать компонент Chart.