Home > Enterprise >  How to declare function using reference?
How to declare function using reference?

Time:11-26

I am making this program to check the alphabetic and numeric characters of a C-type string. I am using C-type strings because it is for an assignment, otherwise I would opt to use std::string.

How do I declare the function? In my case, I want str, SAlpha and SNum, to be stored in the function as s, alpha, num. That's why I am using references, but I don't understand how to declare it without giving me an error saying undefined.

I have been searching, but I am new to functions, and don't understand them quite well. That's why I'm asking.

Below is the code:

#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;

void seperate(char (&s)[], char (&alpha)[], char (&num)[]);

int main() {
    char str[100];
    char SAlpha[100];
    char SNum[100];

    cout << "Insert a string: ";
    cin.getline(str,100);

    strcpy(SAlpha, str);
    strcpy(SNum,str);

    cout << "Alphabetic characters " << endl;

    for (int i = 0; i < strlen(SAlpha); i  ) {
        if (isalpha(SAlpha[i])) {
            cout << " " << SAlpha[i];
        }
    }
    cout << endl;
    cout << "Numeric characters " << endl;
    for (int i = 0; i < strlen(SNum);i  ) {
        if (isdigit(SNum[i])) {
            cout << " " << SNum[i];
        }
    }

    seperate(str, SAlpha, SNum);    //UNDEFINED FUNCTION
    return 0;
}

CodePudding user response:

You are getting an "undefined" error because you have only declared the seperate() function but have not implemented it yet, eg:

#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;

// THIS IS JUST A DECLARATION!!!
void seperate(char (&s)[100], char (&alpha)[100], char (&num)[100]);

int main() {
    char str[100];
    char SAlpha[100];
    char SNum[100];

    cout << "Insert a string: ";
    cin.getline(str,100);

    strcpy(SAlpha, str);
    strcpy(SNum,str);

    cout << "Alphabetic characters " << endl;

    for (int i = 0; i < strlen(SAlpha); i  ) {
        if (isalpha(SAlpha[i])) {
            cout << " " << SAlpha[i];
        }
    }
    cout << endl;
    cout << "Numeric characters " << endl;
    for (int i = 0; i < strlen(SNum);i  ) {
        if (isdigit(SNum[i])) {
            cout << " " << SNum[i];
        }
    }

    seperate(str, SAlpha, SNum); // <-- OK TO CALL SINCE THE FUNCTION IS DECLARED ABOVE...

    return 0;
}

// ADD THIS DEFINITION!!!
void seperate(char (&s)[100], char (&alpha)[100], char (&num)[100])
{
    // do something here...
}
  • Related