I have this code in my fileType.h.
class FileType{
    private:
        School* m_school;
        string m_fileFormat;
        const string m_cfgFile;
        const string m_inputFile;
    public:
        FileType(string p_fileFormat, string p_cfgFile, string p_inputFile):
                 m_fileFormat(p_fileFormat), m_cfgFile(p_cfgFile), m_inputFile(p_inputFile) {};
        virtual bool parseInputFile();
        virtual bool writeOutputFile(const School& m_school);
        virtual bool checkFormat(); // TBD -- used to check the format of the input file
        virtual bool checkConstraints(); // TBD -- used to check things like only +ve 12 digit in the ID etc
        virtual ~FileType();
};
class XmlType:public FileType{
    public:
        XmlType(string p_fileFormat, string p_cfgFile, string p_inputFile):
            FileType(p_fileFormat, p_cfgFile, p_inputFile) {};
        virtual bool parseInputFile();
        virtual bool writeOutputFile(const School& m_school);
        virtual bool checkFormat(); // TBD -- used to check the format of the input file
        virtual bool checkConstraints(); // TBD -- used to check things like only +ve 11 digit in the ID etc
};
class CsvType:public FileType{
    public:
        CsvType(string p_fileFormat, string p_cfgFile, string p_inputFile):
            FileType(p_fileFormat, p_cfgFile, p_inputFile) {};
        virtual bool parseInputFile();
        virtual bool writeOutputFile(const School& m_school);
        virtual bool checkFormat(); // TBD -- used to check the format of the input file
        virtual bool checkConstraints(); // TBD -- used to check things like only +ve 11 digit in the ID etc
};
In my main I put in :
#include "fileType.h"
    FileType *inputFilePtr, *outputFilePtr;
    string stringOne, stringTwo, stringThree;
    inputFilePtr = new CsvType(stringOne, stringTwo, stringThree);
Now my linker tells me that I does not know about the symbols for constructors:
/cygdrive/c/Users/Owner/AppData/Local/Temp/cclieUAi.o:main.cpp:(.text$_ZN7CsvTypeC1ESsSsSs[CsvType::CsvType(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)]+0x1bf): undefined reference to vtable for CsvType'
/cygdrive/c/Users/Owner/AppData/Local/Temp/cclieUAi.o:main.cpp:(.text$_ZN8FileTypeC2ESsSsSs[FileType::FileType(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0x3a): undefined reference tovtable for FileType'
collect2: ld returned 1 exit status
I tried making a dummy constructor with two ints and doing nothing. That worked, but once I put strings, this fails. Any idea what is wrong?
 
     
    