Static Function Help C++

Alex picture Alex · Mar 22, 2010 · Viewed 20k times · Source

I can't get past this issue I am having. Here's a simple example:

class x
{
    public:
    void function(void);

    private:
    static void function2(void);
};

void x::function(void)
{
    x::function2(void);
}

static void function2(void)
{
     //something
}

I get errors in which complain about function2 being private. If I make it public (which I don't really want to do) I get errors about an undefined reference to function2. What am I doing wrong? Thank you!

Answer

Sameer picture Sameer · Mar 22, 2010
  1. You can't have a function declaration and definition both in a class. Either move the definitions out of the class or remove the declarations.

  2. You can't call a function with a void as a parameter. That is used only in the declaration.

  3. The function definition for function2 if outside the class will need a x:: qualifier and static is not needed the second time.


    class x
    {
        public:
            void function(void); 
        private:
            static void function2(void);
    };

    void x::function(void)
    { 
        x::function2(); 
    }

    void x::function2(void)
    {
    }