私は ac# dev として C++ に取り組もうとしており、いくつかのカスタム コントロールを作成しています。次の複雑な c# 辞書に相当する c++ が必要です
private static Dictionary<PinchscapeColor,
Dictionary<PinchscapeColorLevel, Brush>> AccentColorMap;
PinchscapeColor と PinchscapeColorLevel は単純な c# 列挙型です
public enum PinchscapeColorLevel
{
Light,
Medium
Dark
}
public enum PinchscapeColor
{
PinchscapeCyan,
PinchscapeLime,
PinchscapeMagenta,
PinchscapeTangerine,
PinchscapePlum
}
そして、このような特定の色/色レベルの組み合わせを計算します(c#で)
var color = AccentColorMap[PinchscapeColor.PinchscapeCyan][PinchscapeColorLevel.Dark];
C ++でこれを行う私の試みは、ある程度まで成功しました:
私の列挙型:
public enum class PinchscapeColorLevel
{
Light,
Medium,
Dark
};
public enum class PinchscapeColor
{
PinchscapeCyan,
PinchscapeLime,
PinchscapeMagenta,
PinchscapeTangerine,
PinchscapePlum
};
このようにヘッダーファイルにマップを定義しました
Platform::Collections::Map<PinchscapeBasicControls::PinchscapeColor,
Platform::Collections::Map<PinchscapeBasicControls::PinchscapeColorLevel,
Windows::UI::Xaml::Media::Brush^>^>^ colorMap;
しかし、次のコンパイラエラーが発生します:
program files (x86)\microsoft visual studio 11.0\vc\include\collection.h(1118): エラー C3986: 'Invoke': パブリック メンバーの署名にネイティブ型 'std::less<_Ty>' が含まれています (最初の行です) 、それは永遠に続く)
誰かが私が間違っていることについて何か考えがありますか? 私はこれが簡単になるだろうと想像していました:(
編集
問題を再現するために必要なすべてのコードである最小限のコード例を以下に示します。
1) Class1.h
#pragma once
namespace WindowsRuntimeComponent1
{
public enum class ColorLevelEnum
{
Light,
Medium,
Dark
};
public enum class ColorEnum
{
Cyan,
Lime,
Magenta,
Tangerine,
Plum
};
public ref class Class1 sealed
{
private:
Windows::Foundation::Collections::IMap<WindowsRuntimeComponent1::
ColorEnum,Windows::Foundation::Collections::IMap<WindowsRuntimeComponent1::
ColorLevelEnum,Windows::UI::Xaml::Media::Brush^>^>^ colorMap;
public:
Class1();
};
}
Class1.cpp
#include "pch.h"
#include <collection.h>
#include "Class1.h"
using namespace WindowsRuntimeComponent1;
using namespace Windows::UI::Xaml::Media;
using namespace Platform::Collections;
using namespace Platform;
Class1::Class1()
{
if (colorMap == nullptr)
{
colorMap = ref new Map<ColorEnum,Map<ColorLevelEnum,Brush^>^>();
}
}
問題の再現に役立つことを願っています
これを整理するために時間を割いてくれた人に感謝します