Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 775341
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T19:16:24+00:00 2026-05-14T19:16:24+00:00

I have a problem with Visual C++ 2005, where apparently inner classes with the

  • 0

I have a problem with Visual C++ 2005, where apparently inner classes with the same name but in different outer classes are confused.

The problem occurs for two layers, where each layer has a listener interface as an inner class. B is a listener of A, and has its own listener in a third layer above it (not shown).

The structure of the code looks like this:

A.h

class A
{
public:
    class Listener
    {
    public:
        Listener();
        virtual ~Listener() = 0;
    };
    // ...
};

B.h

class B : public A::Listener
{
    class Listener
    {
    public:
        Listener();
        virtual ~Listener() = 0;
    };
    // ...
};

A::Listener() and A::~Listener() are defined in A.cpp.

B.cpp

B::Listener::Listener() {}
B::Listener::~Listener() {}

I get the error

B.cpp(49) : error C2509: '{ctor}' : member function not declared in 'B'

The C++ compiler for Renesas sh2a has no problem with this, but then it is more liberal than Visual C++ in some other respects, too.

If I rename the listener interfaces to have different names the problem goes away, but I’d like to avoid that (the real class names instead of A or B are rather long).

Is what I’m doing correct C++, or is the complaint by Visual C++ justified?

Is there a way to work around this problem without renaming the listener interfaces?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T19:16:25+00:00Added an answer on May 14, 2026 at 7:16 pm

    the code you posted produced the same compiler error you described on my machine. I’m not so sure myself what the problem exactly is, but I have a feeling that inherting from a pure virtual class and declaring a pure virtual class within the descendant might not be a good idea.

    I managed to compile a modified version, maybe this helps you solve your problems:

    class OuterA
    {
      public:
        class Listener
        {
          public:
            Listener() {}
            virtual ~Listener() = 0 {}
        };
    
        OuterA() {}
        ~OuterA(){}
    };
    
    class OuterB : public OuterA::Listener
    {
      public:
        class Listener
        {
          public:
            Listener()  {}
            ~Listener() {}
        };
    
        OuterB()  {}
        ~OuterB() {}
    };
    

    // EDIT to avoid inline ctor and dtor

    If you use typedefs to hide the names of the Listeners at least my demo code compiles and links:

    // header

    class OuterA
    {
      public:
        class Listener
        {
          public:
            Listener();
            virtual ~Listener() = 0;
        };
    
        OuterA();
        ~OuterA();
    };   
    
    class OuterB : public OuterA::Listener
    {
      public:
        class Listener
        {
          public:
            Listener();
            virtual ~Listener() = 0;
        };
    
        OuterB();
        ~OuterB();
    };
    

    // implementation

    OuterA::OuterA(){}
    OuterA::~OuterA(){}
    
    OuterA::Listener::Listener(){}
    OuterA::Listener::~Listener(){}
    
    typedef OuterB::Listener BListener;
    
    OuterB::OuterB() {}
    OuterB::~OuterB(){}
    
    BListener::Listener(){}
    BListener::~Listener(){}
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a problem with a Winforms application written in Visual Studio 2005 (C#).
I have a weird problem with images in visual web developer, I cant change
I do not have problem as such but I am quite new to Ruby.
I have problem in some JavaScript that I am writing where the Switch statement
I have problem with return statment >.< I want to store all magazine names
I have problem with starting processes in impersonated context in ASP.NET 2.0. I am
I have problem compilin this code..can anyone tell whats wrong with the syntax CREATE
I have problem with ActionLink. I'd like to pass to my ActionLink parameter for
I have problem when I try insert some data to Informix TEXT column via
I have a problem using the Java search function in Eclipse on a particular

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.