Используя Visual Studio 2019, C ++ (/ clr). Следующий код компилируется, отлично работает при отладке, но выдает ошибку E0289: "No instance of constructor matches the argument list"
там, где I gcnew
a System::Collections::Generic::Dictionary
. Подтверждено несколькими комбинациями: Windows Версия SDK / PlatformToolset / Language Standard.
Каков правильный синтаксис? Я что-то упустил?
#include "pch.h"
#include <iostream>
using namespace System::Collections::Generic;
int main()
{
Dictionary<int, double>^ d = gcnew Dictionary<int, double>();
d->Add(1, 1.0);
}
Уже существующие вопросы относительно E0289 в основном были вызваны неправильным числом или типом аргументов. Однако это примерно System::Collections::Generic::Dictionary
и там IS конструктор без аргумента .
Изменить: То же самое происходит с List<double>^ l= gcnew List<double>();
. Работает нормально, но напрягает. Есть идеи?
Контекст
Обычно я пишу C#, но новичок в C ++. В моем решении. NET я решил написать класс C ++ / CLR, реализующий интерфейсы, написанные на C#, так как реализация требовала некоторых вызовов собственных DLL. В интерфейсе есть метод, который должен возвращать Dictionary
, поэтому я пытаюсь создать пустой Dictionary
, вставить в него некоторые данные и вернуться из метода класса C ++ / CLR.