CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  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.

  2. #2
    Join Date
    Oct 2006
    Location
    Sweden
    Posts
    3,654

    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.
    Debugging is twice as hard as writing the code in the first place.
    Therefore, if you write the code as cleverly as possible, you are, by
    definition, not smart enough to debug it.
    - Brian W. Kernighan

    To enhance your chance's of getting an answer be sure to read
    http://www.codeguru.com/forum/announ...nouncementid=6
    and http://www.codeguru.com/forum/showthread.php?t=366302 before posting

    Refresh your memory on formatting tags here
    http://www.codeguru.com/forum/misc.php?do=bbcode

    Get your free MS compiler here
    https://visualstudio.microsoft.com/vs

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