简体   繁体   中英

Error for pointer to member in C++

Header file

#include <iostream>
#include <cstring>

const unsigned MaxLength = 11;

class Phone {
public:

    Phone(const char *phone) {
    setPhone(phone);
    }

    void        setPhone(const char Phone[ ]);
    const char* getPhone();

private:
    char phone[MaxLength+1];
};

Cpp file

#include "Phone.h"
#include <iostream>
#include <ctype.h>
#include <cstring>

using namespace std; 
bool checkNum(char num[]);

void Phone::setPhone(const char Phone[ ]) {
    strncpy(phone, Phone, MaxLength);
    phone[MaxLength] = '\0';
}

const char* Phone::getPhone() {
    return phone;
}


int main() {
    Phone i1("12345678901");

    cout << i1.getPhone() << endl;
    if (checkNum(i1.getPhone)) 
        cout << "Correct" << endl;
    else 
        cout << "Invalid Wrong" << endl;

}

bool checkNum(char num[]) {
    bool flag = true;
        if (isdigit(num[0]) == 0)
            flag = false;
    return flag;
}

When I tried to compile, I get this error:

error C3867: 'Phone::getPhone': function call missing argument list; use '&Phone::getPhone' to create a pointer to member

I'm getting an error on this line "if (checkNum(i1.getPhone))". I created a Phone object and what I am trying to do is use the function checkNum to see if the first index of the array is a number. Am I referencing the object wrong? Should I use indirect selection operator instead? Any idea what I am doing wrong?

Thanks

You are missing a pair of parentheses after getPhone in if (checkNum(i1.getPhone)) ; it should be if (checkNum(i1.getPhone())) .

The line:

if (checkNum(i1.getPhone))

should be

if (checkNum(i1.getPhone()))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM