I have a Strings.h, a Strings.cpp and a main.cpp function for a project I am working on. The compiler is currently giving me the following error which I don't understand why.
Error LNK2019 unresolved external symbol "public: void __thiscall Strings::getType(class std::basic_string,class std::allocator >)" (?getType@Strings@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function _main Project12 c:\Users\dan revie\documents\visual studio 2015\Projects\Project12\main.obj
Strings.h
#ifndef STRINGS_H
#define STRINGS_H
#include <vector>
#include <string>
using namespace std;
//enum stringType { NONE = 0, SINGLEWORD = 1, PALINDROME, WITHDIGITS, OTHERS }; // 1.1
class Strings {
public:
    // public members
    void getType(string phrase); // 1.4
    int getSize(string phrase); // 1.4
    //void checkValid();
private:
    // private members
    string phrase; // 1.2
    int stringSize; // 1.3
    vector<Strings> String_records; //2.1
};
#endif
Strings.cpp
#include "Strings.h"
#include <iostream>
void Strings::getType(string phrase)
{
    cout << "Hello";
    vector <char> palin1;
    vector <char> palin2;
    bool palinSwitch = true;
    // Palindrone Test
    // forward
    for (unsigned int i = 0; i < phrase.size(); ++i)
    {
        palin1.push_back(phrase[i]); 
    }
    // backward
    for (unsigned int i = phrase.size(); i >= 0; --i)
    {
        palin2.push_back(phrase[i]);
    }
    // Comparison for palindrone
    for (unsigned int i = 0; i < phrase.size(); ++i)
    {
        if (palin1[i] != palin2[i])
        {
            cout << "This is not a palindrone" << endl;
            palinSwitch = false;
        }
    }
    if (palinSwitch == false)
    {
        bool phraseSwitch = false;
        for (unsigned int i = 0; i < phrase.size(); ++i)
        {
            // PHRASE CASE-----------------------------------------------------
            if (isspace(phrase[i]))
            {
                // it is a phrase
                for (unsigned int i = 0; i < phrase.size(); ++i)
                {
                    if (isdigit(phrase[i]))
                    {
                        phraseSwitch = true;
                    }
                }
                if (phraseSwitch == true)
                {
                    cout << "This is a phrase with digits" << endl;
                }
                else if (phraseSwitch == false)
                {
                    cout << "This is a phrase without digits" << endl;
                }
            }
            // SINGLE WORD CASE------------------------------------------------
            else // it is a single word
            {
                for (unsigned int i = 0; i < phrase.size(); ++i)
                {
                    if (isdigit(phrase[i]))
                        phraseSwitch = true;
                }
                if (phraseSwitch == true)
                {
                    cout << "This is one word with digits" << endl;
                }
                else if (phraseSwitch == false)
                {
                    cout << "This is one word without digits" << endl;
                }
            }
        }
    }
}
int Strings::getSize(string phrase)
{
    int count = 0;
    for (unsigned int i = 0; i < phrase.size(); ++i)
    {
        if (!isspace(phrase[i]))
            ++count;
    }
    return count;
}
main.cpp
#include "Strings.h"
#include <iostream>
int main()
{
    string phrase;
    Strings s; 
    cout << "Please enter a string to be analyzed: "; 
    cin >> phrase; 
    s.getType(phrase);
    //s.getSize(phrase);
    return 0;
}
If anyone could shed light on this it would be appreciated.
 
    