E0289: «Ни один экземпляр конструктора не соответствует списку аргументов» при gcnew'ing System :: Collections :: Generi c :: Dictionary в VS2019 - PullRequest
0 голосов
/ 14 июля 2020

Используя 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.

...