C ++ / CLI中的类不允许使用数组?

时间:2015-02-27 10:20:09

标签: arrays class c++-cli

在类中使用 array 类型时,我得到在此处不允许使用C ++ / CLI数组类型错误。首先,我在Visual Studio 2013中创建了一个Console应用程序,并添加了一个新类“MainClass”。然后我添加了一个新方法。问题是我在主cpp文件中的同一个项目中使用了 array 而没有没有问题的类,似乎它在this example中的使用方式相同。这是MainClass.h:

#pragma once

#using <System.dll>
#using <System.Security.dll>
#include <windows.h>


using namespace System;
using namespace System::Security;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::X509Certificates;
using namespace System::IO;

using namespace System::Collections::Generic;

ref class MainClass
{
public:
    MainClass();
    bool Verify(array<System::Byte> DataToVerify);
};

MainClass.cpp:

#include "MainClass.h"

#using <System.dll>
#using <System.Security.dll>
#include <windows.h>


using namespace System;
using namespace System::Security;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::X509Certificates;
using namespace System::IO;

using namespace System::Collections::Generic;


MainClass::MainClass()
{
}

bool MainClass::Verify(array<System::Byte> DataToVerify)
{

    return false;
}

1 个答案:

答案 0 :(得分:12)

    bool Verify(array<System::Byte> DataToVerify);

知道何时使用^ hat在C ++ / CLI中非常重要。如果你没有正确使用它,编译错误并不是很精彩。数组是引用类型,当您将数组作为参数传递时,省略帽子不是可选的。它实际上从不是可选的,托管数组上的堆栈语义没有意义,因为它们不是一次性的。修正:

    bool Verify(array<System::Byte>^ DataToVerify);