Jump to content
  • Advertisement
  • 09/30/04 10:45 AM
    Sign in to follow this  

    Introduction to Pointers, Structures and Linked-Lists Part 8

    General and Gameplay Programming

    Myopic Rhino

    This is just a short article that will help with the small but easy transition from structures to classes. There is very little difference between a class and a struct, and the differences I will not cover in this article until the "Inheritance" and "Polymorphism" articles. Here I will just go through the definition of a class (as copied from the MSDN library, the Microsoft Visual C++ definition of a class):

    class [tag [: base-list ]]
    } [declarators];
    [ class ] tag declarators;

    Well, what does this syntax tell us about how we define a class? Let us stroll through what each part of the class definition process is:

    What this means:
    class is the type that we are specifying, this works exactly the same as a struct or a union would work.
    tag is an identifier so that we can create more instances of our class.
    base-list a list of classes that this class inherits
    member-list a list of member functions and data that this class uses
    declarators declarators are an instance of the class, and are a usable variable. Eg: The declarator in the expression "int i;" is i

    I will go into inheritance later, so we can ignore the base-list part. The member-list stuff we have already seen in our struct's as they are the data and functions that can be used to all the ends of our requirements. One thing that I never covered in the previous article on Member functions was the public, private and protected access modifiers. Quite simply, they are seperators that you place throughout your class or structure that allow data flow only where you allow it.

    Here is an example: If you have our linked list that was defined in previously featured articles, and left them as they are, but allowed users (or third-party programmers) direct access through the way the linked list was set up, then they would be able to point our Next and Previous pointers to whatever they wanted to. Code that allows anybody to do this is bad code, and dangerous code. The program is likely to crash because it is pointing to some obscure memory address, or it could even crash your computer by overwriting some important data in memory unknowingly.

    I will not go into the details of data hiding at the moment (I will save that for my proposed next article, "Class Design") but I will breifly describe what the modifiers mean to us.

    Access Modifier Action
    public In this section we allow anybody and everybody to call the functions, or allows access to the variables that are listed (not recommended for everything)
    private Only the class itself and friends of the class have access to this, but we will avoid talking about function friends for now. This is where it is recommended that you store all class member variables.
    protected Protected functions and data can be accessed by derived classes without the need for a specific friend declaration. This is where you put data for sharing information which is useful, but users will not need to know about.

    Mostly we store our member variables in the private section, and our interface functions (the functions that allow the users certain minimal access to data and how they may manipulate it) will be in the public section. There are occassions where private or protected functions will be created that aid our other class members, but are either too likely to be misused by the user or are of little use to the interface of the class.

    Cheers, Chris (a.k.a. Dwarfsoft)

    Author: Chris Bennett aka Dwarfsoft
    Contact: dwarfsoft@hotmail.com
    February 24th, 2002
    (C) Copyright Chris Bennett, 2002

      Report Article
    Sign in to follow this  

    User Feedback

    There are no comments to display.

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!