-
January 2nd, 2012, 12:26 PM
#1
Error: missing type specifier - int assumed. C++ does not support default int
Hi all,
I need your help. I wrote a form with simple class with template use. I can't compile my application in a debug as i have got the errors.
Form1:
Code:
#pragma once
#include "Class1.h"
namespace Form1{
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Text;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
internal: System::Windows::Forms::Label^ label2;
protected:
internal: System::Windows::Forms::Button^ Button1;
internal: System::Windows::Forms::TextBox^ plainText;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label2 = (gcnew System::Windows::Forms::Label());
this->Button1 = (gcnew System::Windows::Forms::Button());
this->plainText = (gcnew System::Windows::Forms::TextBox());
this->SuspendLayout();
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(24, 46);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(302, 13);
this->label2->TabIndex = 6;
this->label2->Text = L"Please enter the password...";
//
// Button1
//
this->Button1->Location = System::Drawing::Point(122, 101);
this->Button1->Name = L"Button1";
this->Button1->Size = System::Drawing::Size(96, 34);
this->Button1->TabIndex = 5;
this->Button1->Text = L"Test Password!";
this->Button1->UseVisualStyleBackColor = true;
//
// plainText
//
this->plainText->Location = System::Drawing::Point(27, 65);
this->plainText->Name = L"plainText";
this->plainText->Size = System::Drawing::Size(292, 20);
this->plainText->TabIndex = 4;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(341, 162);
this->Controls->Add(this->label2);
this->Controls->Add(this->Button1);
this->Controls->Add(this->plainText);
this->MaximizeBox = false;
this->MinimizeBox = false;
this->Name = L"Form1";
this->SizeGripStyle = System::Windows::Forms::SizeGripStyle::Hide;
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Test Password";
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
};
}
Class1:
Code:
#pragma once
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Diagnostics;
using namespace System::Collections::Generic;
using namespace System::Text;
namespace Form1{
/// <summary>
/// Summary for Class1
/// </summary>
public ref class Class1 : public System::ComponentModel::Component
{
public:
Class1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
Class1(System::ComponentModel::IContainer ^container)
{
/// <summary>
/// Required for Windows.Forms Class Composition Designer support
/// </summary>
container->Add(this);
InitializeComponent();
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Class1()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
components = gcnew System::ComponentModel::Container();
}
#pragma endregion
public: PolyAES()
{
this->algo = gcnew System::Security::Cryptography::RijndaelManaged();
this->algo->Mode = System::Security::Cryptography::CipherMode::CBC;
this->rngAlgo = gcnew System::Security::Cryptography::RNGCryptoServiceProvider();
}
private:
literal int saltSize = 32;
System::Security::Cryptography::SymmetricAlgorithm ^algo;
System::Security::Cryptography::RNGCryptoServiceProvider ^rngAlgo;
array<Byte> ^salt;
private:
void InitializeSecureParameters(array<Byte> ^key)
{
// init rijndael IV
this->algo->GenerateIV();
salt = gcnew array<Byte>(saltSize);
rngAlgo->GetBytes(salt);
System::Security::Cryptography::Rfc2898DeriveBytes ^pwDeriveAlg = gcnew System::Security::Cryptography::Rfc2898DeriveBytes(key, salt, 2000);
this->algo->Key = pwDeriveAlg->GetBytes(32);
}
void LoadSecureParameters(array<Byte> ^key, array<Byte> ^encIv, array<Byte> ^encSalt)
{
this->algo->IV = encIv;
this->salt = encSalt;
System::Security::Cryptography::Rfc2898DeriveBytes ^pwDeriveAlg = gcnew System::Security::Cryptography::Rfc2898DeriveBytes(key, salt, 2000);
this->algo->Key = pwDeriveAlg->GetBytes(32);
}
public:
String ^Encrypt(String ^plainText, String ^key)
{
return Convert::ToBase64String(this->Encrypt(UnicodeEncoding::UTF8->GetBytes(plainText), UnicodeEncoding::UTF8->GetBytes(key)));
}
String ^Decrypt(String ^cipherText, String ^key)
{
return UnicodeEncoding::UTF8->GetString(this->Decrypt(Convert::FromBase64String(cipherText), UnicodeEncoding::UTF8->GetBytes(key)));
}
array<Byte> ^Encrypt(array<Byte> ^plainText, array<Byte> ^key)
{
InitializeSecureParameters(key);
System::Security::Cryptography::ICryptoTransform ^encTransform = algo->CreateEncryptor();
return ConcatDataToCipherText(ConcatDataToCipherText(encTransform->TransformFinalBlock(plainText, 0, plainText->Length), salt), algo->IV);
}
array<Byte> ^Decrypt(array<Byte> ^cipherText, array<Byte> ^key)
{
array<Byte> ^cipherTextWithSalt = gcnew array<Byte>(1);
array<Byte> ^encSalt = gcnew array<Byte>(1);
array<Byte> ^origCipherText = gcnew array<Byte>(1);
array<Byte> ^encIv = gcnew array<Byte>(1);
SliceCipherTextIntoParts(cipherText, 16, cipherTextWithSalt, encIv);
SliceCipherTextIntoParts(cipherTextWithSalt, saltSize, origCipherText, encSalt);
LoadSecureParameters(key, encIv, encSalt);
System::Security::Cryptography::ICryptoTransform ^decTransform = algo->CreateDecryptor();
array<Byte> ^plainText = decTransform->TransformFinalBlock(origCipherText, 0, origCipherText->Length);
return plainText;
}
private:
array<Byte> ^ConcatDataToCipherText(array<Byte> ^cipherText, array<Byte> ^iv)
{
int origLength = cipherText->Length;
Array::Resize(cipherText, cipherText->Length + iv->Length);
Buffer::BlockCopy(iv, 0, cipherText, origLength, iv->Length);
return cipherText;
}
void SliceCipherTextIntoParts(array<Byte> ^cipherText, int secondPartLen, array<Byte> ^%origCipherText, array<Byte> ^%iv)
{
Array::Resize(iv, secondPartLen);
Buffer::BlockCopy(cipherText, Convert::ToInt32(cipherText->Length - secondPartLen), iv, 0, secondPartLen);
Array::Resize(origCipherText, Convert::ToInt32(cipherText->Length - secondPartLen));
Buffer::BlockCopy(cipherText, 0, origCipherText, 0, Convert::ToInt32(cipherText->Length - secondPartLen));
}
};
}
I use visual C++ 2005 Express Edition, and here is the compile error
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
the errors are linked to this line:
Code:
public: PolyAES()
{
this->algo = gcnew System::Security::Cryptography::RijndaelManaged();
this->algo->Mode = System::Security::Cryptography::CipherMode::CBC;
this->rngAlgo = gcnew System::Security::Cryptography::RNGCryptoServiceProvider();
}
Can anyone tell me what was wrong in this code?
Thanks,
Mark
Last edited by mark103; January 2nd, 2012 at 12:28 PM.
-
January 2nd, 2012, 12:30 PM
#2
Re: Error: missing type specifier - int assumed. C++ does not support default int
It's just as the compiler say. PolyAES is the offender since it lacks any return value.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|