2015-02-27 38 views
5

Otrzymuję typ tablicy C++/CLI jest niedozwolony tutaj błąd przy użyciu typu tablica w klasie. Najpierw utworzyłem aplikację Console w Visual Studio 2013 i dodano nową klasę "MainClass". Następnie dodałem nową metodę. Chodzi o to, że użyłem array w tym samym projekcie w głównym pliku cpp bez żadnych klas bez problemów i wygląda na to, że jest używany w ten sam sposób w this example. Oto MainClass.h:Tablica niedozwolona w klasie w C++/CLI?

#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; 
} 

Odpowiedz

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

Wiedząc, kiedy używać^kapelusz jest super-duper ważne w C++/CLI. A błędy kompilacji nie są dokładnie fantastyczne, jeśli nie używasz ich poprawnie. Tablice są typami referencyjnymi, pominięcie tej opcji nie jest opcjonalne, gdy przekazujesz tablicę jako argument. W rzeczywistości nigdy nie jest to opcjonalne, semantyka stosu na zarządzanych tablicach nie ma sensu, ponieważ nie są one jednorazowe. Napraw:

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

Bardzo dziękuję za wyjaśnienia na temat^użytkowania! –