CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2

Threaded View

  1. #1
    Join Date
    Aug 2007
    Posts
    448

    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> ^&#37;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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured