As part of a program i have a function that takes in a word and saves it into a 2d array. Before it saves the word it checks to make sure there is room in the array. If the number of words in the array is equal to the current size of the row dimension then more space needs to be allocated. The problem occurs after the new bigger 2d array is created and i want to assign the address of this array to the original pointer to the smaller array.

The parameters to the procedure are
word = a string holding the new word to be saved
results = a 2d array holding all previously saved words
numWords = the number of words currently in the array
maxWords = the maximum number of words for which there is space. i.e the size of the row parameter to results.

RMAX_LEN is #define - ed earlier in the program to 60

Any help is appreciated.

void saveWord(string &word, char results[][RMAX_LEN], int &numWords, int &maxWords)
        unsigned int i(0), j(0);
        //First check there is room for another word
        if(numWords == maxWords){
                //put the address of the array of char* in tempResults
                char **tempResults= new char*[maxWords*2];

                //Each element of temp results holds a pointer to a char array
                for(i = 0; i < (maxWords*2); i++){
                        tempResults[i] = new char[RMAX_LEN];

                //Copy all entries in results into the new array
                for(i = 0; i < maxWords; i++){
                        for(j = 0; j < RMAX_LEN; j++){
                                tempResults[i][j] = results[i][j];
                        }// End of for
                } //End of for

                maxWords *= 2; //change maxwords to reflect new buffer size

                for(i = 0; i < maxWords; i++){ //Free up old reserved space
			delete [] results[i];
                delete [] results;
                results = tempResults; //results now points to new array

        //Then copy in the word
        j = (unsigned int)word.length();
        for(i = 0; i < j; i++){
                results[numWords][i] = word[i];
        } //End of for

        results[numWords][i] = '\0';
}// End of saveWord
And the compiler error
bash-3.00$ g++ pa1.cpp
pa1.cpp: In function `void saveWord(std::string&, char (*)[60], int&, int&)':
pa1.cpp:119: error: cannot convert `char**' to `char (*)[60]' in assignment

By the way, is my method of creating the new array the most desirable method or is there a better one?