CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Feb 2024
    Posts
    2

    C2882: 'ClassLibrary2' : illegal use of namespace identifier in expression

    Hi all,

    I need your help.I am working on a class library project using c++ to create the function that I want to use to call the function from my windows application.

    When I try this:

    Code:
    ClassLibrary2a^ class1a = gcnew ClassLibrary2a;

    I am getting the errors:

    C2882: 'ClassLibrary2a' : illegal use of namespace identifier in expression
    C2065: 'class1a' : undeclared identifier
    C2061: syntax error : identifier 'ClassLibrary2a'


    I have added the ClassLibrary2a dll in the reference but it have make no different as I am still getting the same errors.


    Here is my form code:

    #pragma once


    Code:
    namespace test_window_application {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace ClassLibrary2a;
    
    
    	/// <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;
    			}
    		}
    	private: System::Windows::Forms::Button^  button1;
    	protected: 
    
    	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->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(78, 116);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"button1";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 262);
    			this->Controls->Add(this->button1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    				 //ClassLibrary2a^ class1a = gcnew ClassLibrary2a::Class1;
    				 ClassLibrary2a^ class1a = gcnew ClassLibrary2a;
    				 
    
    			 }
    	};
    }


    Here is the ClassLibrary2a code:

    // ClassLibrary2a.h

    #pragma once

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System:ata;
    using namespace System:iagnostics;
    using namespace System::IO;


    Code:
    namespace ClassLibrary2a {
    
    	public ref class Class1
    	{
    		// TODO: Add your methods for this class here.
    		public: void MyMethodNew() {
    			// Do something in the method
    			//ContactsControl^ contact = gcnew ContactsControl();
    			//contact->label1->Text = "hello chris";
    			MessageBox::Show("message", "title");
    		}
    	};
    
    	
    }

    I dont really understand why I am getting the errors as it doesn't make any sense. I have included the `using namespace ClassLibrary2a` but it have make no different. I am using managed c++/cli

    Do you know why I am getting the errors?

    Do you know how I can fix it?

    I have tried everything included the namespace and added in the reference but it have make no different. I couldn't be able to find out myself how to resolve it.

    Any advice would be much appreciated.

  2. #2
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,413

    Re: C2882: 'ClassLibrary2' : illegal use of namespace identifier in expression

    I guess your problem is in your code: it has nothing to do with the native C++, it looks like Managed C++/CLI.
    So I'll move your question to the more appropriate forum.
    Victor Nijegorodov

  3. #3
    Join Date
    May 2024
    Posts
    2

    Re: C2882: 'ClassLibrary2' : illegal use of namespace identifier in expression

    The error message "C2882: 'ClassLibrary2' : illegal use of namespace identifier in expression" typically occurs in C++ when you try to use a namespace in a way that the compiler doesn't expect or support. Here are a few common reasons for encountering this error:

    Incorrect Syntax: Make sure you are using the namespace correctly. In C++, namespaces are typically used with the :: scope resolution operator. For example:

    cpp
    Copy code
    using namespace ClassLibrary2; // Incorrect usage
    Should be:

    cpp
    Copy code
    using namespace ClassLibrary2; // Correct usage
    Namespace Conflicts: Ensure that the namespace ClassLibrary2 is defined and available in your project. If you're trying to use a namespace that hasn't been declared or isn't accessible,


    Namespace Collision: If you have multiple namespaces with the same name or if there's a naming conflict elsewhere in your code, it can cause this error. Check for any naming conflicts and resolve them by either renaming or fully qualifying the namespaces.

    Compiler or IDE Issue: In rare cases, this error might be caused by a bug in the compiler or the IDE you're using. Updating your compiler or IDE to the latest version or trying a different compiler/IDE could potentially resolve the issue.

    Without seeing the specific code causing the error, it's challenging to provide a more precise solution. If you could provide more context or the relevant code snippet where the error occurs, I could offer more targeted assistance.
    Last edited by 2kaud; May 22nd, 2024 at 05:32 AM. Reason: Removed URL link

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