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.