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

Ask A Question

Stats

  • Questions 402k
  • Answers 402k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer This works for me: require 'sinatra/base' require 'scaffolding_extensions' class Thingy… May 15, 2026 at 4:48 am
  • Editorial Team
    Editorial Team added an answer First of all there is no need to extend a… May 15, 2026 at 4:48 am
  • Editorial Team
    Editorial Team added an answer a browser that has separate processes for each tab debugger… May 15, 2026 at 4:48 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.