September 18th, 2010, 10:57 PM
[RESOLVED] How to convert an STL/CLR vector to a .NET array
The second sample in this MSDN article demonstrates how to convert an STL/CLR map<> to a .NET IDictionary<>. I tried to transpose this pattern to a conversion from a vector<> to an array<>, but this code fails to compile:
The last line before the return statement gives me an error C2440, telling me that a 'cliext::vector<_Value_t> ^' can't be converted into a 'cli::array<Type> ^'.
using namespace cliext;
// Return an array of moving holidays in a specific year
array<DateTime> ^Holidays::MovingHolidays(int nYear)
vector<DateTime> ^vctHolidays=gcnew vector<DateTime>;
// Just a few for a first test:
vctHolidays->push_back(datEasterSunday+TimeSpan(-2,0,0,0)); // Karfreitag
vctHolidays->push_back(datEasterSunday); // Ostersonntag (of course... <g>)
vctHolidays->push_back(datEasterSunday+TimeSpan(1,0,0,0)); // Ostermontag
I only had to go that detour at all because I didn't find a method like push_back or add for the CLI array
There was, BTW, something that made me wonder in the MSDN sample code: It declares a stand-alone variable of type System::Collections::Generic::IDictionary<float, int>. I always were of the strong belief that these ISomethings could only be implemented as part of a "hosting" class.
TIA for any advice about that!
Tags for this Thread
Click Here to Expand Forum to Full Width