I thought they, as for general member functions can be defined either inside the class as an inline or in a .cpp file. But I'm totally confused by the following error I'm getting.

What works:
Code:
#ifndef KEYWORD
#define KEYWORD
#include "token.h"
class Keyword : public token
{
public:
    Keyword(std::string input):token(input){/*....*/};
};

#endif
What doesn't work :
.h
Code:
#ifndef KEYWORD
#define KEYWORD
#include "token.h"
class Keyword : public token
{
public:
    Keyword(std::string input):token(input);
};

#endif
.cpp
Code:
#include "Keyword.h"
Keyword::Keyword(std::string input):token(input)
{
    
}
Error:
Quote Originally Posted by g++-4.6
Code:
$make
g++ Keyword.cpp -c -g -std=c++0x -o keyword.o
In file included from Keyword.cpp:1:0:
Keyword.h: In constructor ‘Keyword::Keyword(std::string)’:
Keyword.h:7:43: error: expected ‘{’ at end of input
Keyword.cpp: At global scope:
Keyword.cpp:2:1: error: redefinition of ‘Keyword::Keyword(std::string)’
Keyword.h:7:5: error: ‘Keyword::Keyword(std::string)’ previously defined here
make: *** [keyword.o] Error 1
What am I missing ?