Like Tree1Likes
  • 1 Post By Florian

Calling a constructor on a non-pointer after its declaration.

This is a discussion on Calling a constructor on a non-pointer after its declaration. within the C++ Programming forums, part of the General Programming Boards category; Hello. let's say I have the following class: Code: class A { public: A(int x) :x(x) {} private: int x; ...

  1. #1
    Registered User
    Join Date
    May 2006
    Posts
    100

    Calling a constructor on a non-pointer after its declaration.

    Hello. let's say I have the following class:

    Code:
    class A
    {
    public:
         A(int x) :x(x) {}
    
    private:
         int x;
    };
    Now let's say I also have the following class:

    Code:
    class B
    {
         public:
         B();
    
         private:
         A a;
    };
    
    B::B()
    {
        a.A(5); // invalid
    }
    How do I fix that call to A's constructor without changing a to a pointer or something?

  2. #2
    Registered User
    Join Date
    Jul 2008
    Posts
    35
    The same way as you initialize x in class A.

    Code:
    B::B() : a(5)
    laserlight likes this.

  3. #3
    Registered User
    Join Date
    May 2006
    Posts
    100
    In the program I'm making right now though, I'm having to initialize a in something other than B's constructor though. kind of like this:

    Code:
    class B
    {
    public:
         void run();
    
    private:
         A a;
    };
    
    void B::run()
    {
         a.A(5); // invalid
    }

  4. #4
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    21,452
    By the time the B object is constructed, its A member variable has been constructed, so it is too late to initialise it. You must either provide A with a default constructor, or initialise A with some default int value, and then later change it.
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  5. #5
    Registered User
    Join Date
    May 2006
    Posts
    100
    Thanks!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 5
    Last Post: 02-21-2011, 01:19 AM
  2. Replies: 10
    Last Post: 06-02-2008, 08:09 AM
  3. Constructor calling another constructor
    By renanmzmendes in forum C++ Programming
    Replies: 4
    Last Post: 03-21-2008, 03:51 PM
  4. Constructor calling another constructor?
    By cpjust in forum C++ Programming
    Replies: 10
    Last Post: 02-11-2008, 01:01 PM
  5. Calling Default Constructor
    By Davros in forum C++ Programming
    Replies: 2
    Last Post: 09-13-2004, 01:08 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21