在 C++/CLI 中 class 中不允许使用数组?
Array not allowed in class in C++/CLI?
在 class 中使用 array 类型时,我收到 a C++/CLI array type is not allowed here 错误.首先,我在 Visual Studio 2013 年创建了一个控制台应用程序并添加了一个新的 class "MainClass"。然后我添加了一个新方法。问题是我在主 cpp 文件的同一个项目中使用了 array 没有 classes 没有问题而且它似乎在 [=] 中以相同的方式使用13=]。这是 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;
}
bool Verify(array<System::Byte> DataToVerify);
知道何时使用 ^ 帽子在 C++/CLI 中非常重要。当你没有正确使用它时,编译错误并不是很好。数组是引用类型,当您将数组作为参数传递时,在这里省略帽子不是可选的。事实上,它从来都不是可选的,托管数组上的堆栈语义没有意义,因为它们不是一次性的。修复:
bool Verify(array<System::Byte>^ DataToVerify);
在 class 中使用 array 类型时,我收到 a C++/CLI array type is not allowed here 错误.首先,我在 Visual Studio 2013 年创建了一个控制台应用程序并添加了一个新的 class "MainClass"。然后我添加了一个新方法。问题是我在主 cpp 文件的同一个项目中使用了 array 没有 classes 没有问题而且它似乎在 [=] 中以相同的方式使用13=]。这是 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;
}
bool Verify(array<System::Byte> DataToVerify);
知道何时使用 ^ 帽子在 C++/CLI 中非常重要。当你没有正确使用它时,编译错误并不是很好。数组是引用类型,当您将数组作为参数传递时,在这里省略帽子不是可选的。事实上,它从来都不是可选的,托管数组上的堆栈语义没有意义,因为它们不是一次性的。修复:
bool Verify(array<System::Byte>^ DataToVerify);