I am currently 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 the client can use, and I know how to implement it in the corresponding class. However, let's say that this function is divided into several stages, which can be written as independent functions that I do not want to see by the user (protect intellectual property). Usually for each specific function in the header file I have to write in myClassName :: myFunctionName (parameter 1 ..) in the .cpp file. Is there a way to define and use functions only in a .cpp file? For example, I wrote a program to see if two words are anagrams (have the same letters).
My header file:
#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:
#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]++; } }
Note that the decposeWordIntoLetters function is not defined in the header file. If I copy and paste the code twice into 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. Thanks.
source share