I am currently practicing writing classes and header files in C++. I have a question: let's say that in my header file I have a public function that a client can use, and I know how to implement it in the respective class. However, let's say that this function is divided into several steps that can be written as independent functions that I don't want the user to see (protect intellectual property). Normally, for each defined function in the header file, I would write in myClassName::myFunctionName(parameter 1 ..) in the .cpp file. Is there a way to define and use functions only in .cpp file? For example, I wrote a program to see if two words are anagrams (have the same letters).
My header file is:
#ifndef _Anagrams_h
#define _Anagrams_h
#include <string>
using namespace std;
class Anagrams{
    public:
        Anagrams(string &s);
        static bool areTwoWordsAnagrams(string s1, string s2) ; 
        string getWord()const; 
        void setWord(string &s);
    private:
        string word;
};
#endif
My class is:
#include "Anagrams.h"
#include <string>
using namespace std;
Anagrams::Anagrams(string &s){
    word = s;
}
bool Anagrams::areTwoWordsAnagrams(string word1, string word2){
    int sizeOfWord1 = word1.size();
    int sizeOfWord2 = word2.size();
    int array1[26];
    int array2[26];
    for (int i = 0; i < 26; i++){ //Initialize both arrays
        array1[i] = 0;
        array2[i] = 0;
    }
    decomposeWordIntoLetters(word1,array1,sizeOfWord1);
    decomposeWordIntoLetters(word2,array2,sizeOfWord2);
    return true;
}
string Anagrams::getWord() const{
    return word;
}
void Anagrams::setWord(string &s){
    word = s;
}
void decomposeWordIntoLetters(string word, int array[], int size){
    for (int i = 0; i < size; i++){
        char letter = word[i];
        array['z' - letter]++;
    }
}
Notice that the decomposeWordIntoLetters function is not defined in the header file. If I copy and paste the code twice in Anagrams::areTwoAnagrams(string word1, string word2), the program works. Otherwise, I get the following error:
Anagrams.cpp: In static member function ‘static bool Anagrams::areTwoWordsAnagrams(std::string, std::string)’:
Anagrams.cpp:22: error: ‘decomposeWordIntoLetters’ was not declared in this scope
Any help would be greatly appreciated. Thank you.
 
     
     
    