Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收cpp/cli对象的C#类构造函数导致错误';语言不支持';_C#_.net_Visual Studio 2015_C++ Cli_Clr - Fatal编程技术网

接收cpp/cli对象的C#类构造函数导致错误';语言不支持';

接收cpp/cli对象的C#类构造函数导致错误';语言不支持';,c#,.net,visual-studio-2015,c++-cli,clr,C#,.net,Visual Studio 2015,C++ Cli,Clr,我的解决方案有两个项目:一个C#exe和一个cpp clr dll。 Class1和Class2是在dll中实现的cpp/clr类,Class1的构造函数需要一个Class2对象:Class1(Class2 cl2) 当我尝试在我的C#类中实例化它时,我得到以下错误: Error CS0570 'Class1.Class1(?)' is not supported by the language. 我该怎么办? 我的代码如下: // cpp_dll.h #pragma once using n

我的解决方案有两个项目:一个C#exe和一个cpp clr dll。 Class1和Class2是在dll中实现的cpp/clr类,Class1的构造函数需要一个Class2对象:
Class1(Class2 cl2)
当我尝试在我的C#类中实例化它时,我得到以下错误:

Error CS0570 'Class1.Class1(?)' is not supported by the language.
我该怎么办? 我的代码如下:

// cpp_dll.h
#pragma once
using namespace System;
namespace cpp_dll {

    public ref class Class2
    {

    };

    public ref class Class1
    {
    public:
        Class1(Class2 cl2);
    };
}
------------------
// cpp_dll.cpp.

#include "stdafx.h"

#include "cpp_dll.h"

cpp_dll::Class1::Class1(Class2 cl2)
{

}
-------------------
//MainWindow.xaml.cs
using System.Windows;
using cpp_dll;

namespace csharp_app
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            Class1 cl1 = new Class1(new Class2()); //here I get CS0570
        }
    }
}

您应该像这样声明Class1的构造函数:

public:
  Class1(Class2^ cl2); <--use ^
公共:

类别1(类别2^cl2) 我想我是因为傲慢而错过了:

Class2是一个ref类,因此应该按原样传递(见下文):

类别1(类别2^cl2);//在 cpp_dll::Class1::Class1(Class2^cl2)//在cpp中 var cl2=新类2()//在.cs中

类别1 cl1=新类别1(cl2)//ref应获取可写对象
本月无奖金):

谢谢。它应该是ref,但解决方案是正确的。