Problem with classes

This is a discussion on Problem with classes within the C++ Programming forums, part of the General Programming Boards category; Say you have two classes, class A and class B . class A is defined first, but class B has ...

  1. #1

    Join Date
    Apr 2008
    Location
    USA
    Posts
    76

    Problem with classes

    Say you have two classes, class A and class B. class A is defined first, but class B has a prototype. When I make a method in class A whose argument is of type B&, I get a strange error message from the compiler saying " invalid use of undefined type 'struct B' ".

    Why am I getting this error, and what should I do to fix it?

    Example:
    Code:
    class B;
    
    class A
    {
        public:
            void test(B& something)
            {
                something.x = 0;
            }
    };
    
    class B
    {
        public:
            int x;
    };
    I get the following error:

    In member function `void A::test(B&)':
    (8) invalid use of undefined type `struct B'
    (1) forward declaration of `struct B'

    I'm using Dev-C++.
    Last edited by rudyman; 04-22-2008 at 11:22 PM.

  2. #2
    Advanced Novice linucksrox's Avatar
    Join Date
    Apr 2004
    Location
    Michigan
    Posts
    198
    It's been a while, but I think you need to define a new class B inside of class A, just like you would do if you were using an int or something else.

    something like this inside of class A:

    B class_b_variable;

    and then instead of using void test(B& something) you need void test(class_b_variable& something)

    I could be way off...
    "What are all you parallelograms doing here?" - Peter Griffin (to Joe and his wheelchair buddies)

  3. #3
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,474
    but I think you need to define a new class B inside of class A,
    no

    class A is defined first, but class B has a prototype
    it is enough for using reference or pointer, not enough to access members

    or define class B first
    or move the function body into the cpp file where you can include full B class definition
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  4. #4
    C++まいる!Cをこわせ! Elysia's Avatar
    Join Date
    Oct 2007
    Posts
    22,457
    Problem is that the compiler does not know how B looks like when compiling A, so you can't use B. Therefore it is always best to put the implementation in a source file. The source file can safely include both headers and you can do what you want to do without problems.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. problem with classes and pointers
    By Akkernight in forum C++ Programming
    Replies: 18
    Last Post: 02-21-2009, 05:21 AM
  2. Memory problem with Borland C 3.1
    By AZ1699 in forum C Programming
    Replies: 16
    Last Post: 11-16-2007, 10:22 AM
  3. Having a problem with Classes
    By FoxTrot in forum C++ Programming
    Replies: 10
    Last Post: 09-06-2007, 07:40 PM
  4. Problem with destructors.
    By Hulag in forum C++ Programming
    Replies: 7
    Last Post: 06-11-2004, 12:30 PM
  5. problem w/ nested templatized classes
    By *ClownPimp* in forum C++ Programming
    Replies: 8
    Last Post: 10-19-2002, 07:58 AM

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