ssk
ssk

Reputation: 9255

declaration of static function outside of class is not definition

I am getting this error when I compile with GCC:

error: declaration of 'static int utils::StringUtils::SplitString(const std::string&, const std::string&, std::vector<std::basic_string<char> >&, bool)' outside of class is not definition

Code:

Header:

namespace utils
{
    /*
    *   This class provides static String utilities based on STL library.
    */
    class StringUtils
    {
    public:
        /**
        *   Splits the string based on the given delimiter.
        *   Reference: http://www.codeproject.com/Articles/1114/STL-Split-String
        */
        static int SplitString( const std::string&              input, 
                                const std::string&              delimiter,
                                std::vector<std::string>&       results, 
                                bool includeEmpties =           true );
    };
};

Source:

namespace utils
{
    int StringUtils::SplitString(   const std::string&          input, 
                                    const std::string&          delimiter,
                                    std::vector<std::string>&   results, 
                                    bool                        includeEmpties );
    {
    ....
    }
}

Upvotes: 3

Views: 8306

Answers (2)

Eric
Eric

Reputation: 6016

I believe you need to lose that semicolon in your source file. Should be:

namespace utils
{
    int StringUtils::SplitString(   const std::string&          input, 
                                    const std::string&          delimiter,
                                    std::vector<std::string>&   results, 
                                    bool                        includeEmpties ) // <--- No more semi-colon!
    {
    ....
    }
}

Upvotes: 6

paddy
paddy

Reputation: 63461

Take the semi-colon off the end of the definition in your source file! Copy-paste error =)

Upvotes: 11

Related Questions