Объявление идентификатора неопределенным и несовместимым

#c #undefined

#c #не определено

Вопрос:

Я новичок в c , и мой учебник не очень полезен. У меня есть несколько ошибок в моем коде. Где мне сообщают, что идентификатор для customerAccount не определен, и у меня несовместимое объявление с моим поиском int до и после моего main. Я опубликую некоторый код ниже, поскольку я пытался разобраться в этом некоторое время, и я в растерянности.

 #include<iostream>
#include<string>
using namespace std;

struct {
    string Name;
    string Address;
    string City_State_Zip;
    double phoneNumber;
    double actBalance;
    string Payment;

};

//This is where the errors start, saying customer account is undefined
void Display(customerAccount ca);
//declaration is incompatible with int search
int Search(customerAccount, string);

int main() {

 customerAccount customers[10];
 string SName;

int choice, i = 0, size = 0;
do {
    cout << "****Menu****" << endl;
    cout << "1. Enter Customer Information" << endl;
    cout << "2. Change Customer Information" << endl;
    cout << "3. Search For Customer" << endl;
    cout << "4. Display Customer Data" << endl;
    cout << "5. Exit" << endl;
    cout << "Please enter a choice 1,2,3,4 or 5";
    cin >> choice;
    switch (choice) {
    case 1:
        cout << "Enter customer name: ";
        cin >> customers[i].Name;
        cout << "Enter customer address: ";
        cin >> customers[i].Address;
        cout << "Enter city state and zip: ";
        cin >> customers[i].City_State_Zip;
        cout << "Enter phone number: ";
        cin >> customers[i].phoneNumber;
        cout << "Enter account balance: ";
        cin >> customers[i].actBalance;
        if (customers[i].actBalance < 0) {
            cout << "Account balance cannot be negative. Please re-enter: " 
         << endl;
            cin >> customers[i].actBalance;
        }
        cout << "Enter last payment: ";
        cin >> customers[i].Payment;
        i  ;
        break;

    case 2: int ele;
        cout << "Enter customer information to modify: " << endl;
        cout << "Enter customer name: ";
        cin >> customers[ele - 1].Name;
        cout << "Enter customer address: ";
        cin >> customers[ele - 1].Address;
        cout << "Enter city state and zip";
        cin >> customers[ele - 1].City_State_Zip;
        cout << "Enter phone number: ";
        cin >> customers[ele - 1].phoneNumber;
        cout << "Enter account balance: ";
        cin >> customers[ele - 1].actBalance;
        if (customers[ele - 1].actBalance < 0) {
            cout << "Account balance cannot be negative. Please re-enter: " 
        << endl;
            cin >> customers[i].actBalance;
        }
        cout << "Enter date of payment: ";
        cin >> customers[ele - 1].Payment;
        break;

    case 3: cout << "Enter customer name to search: ";
        cin >> SName;
        for (size = 0; size < i; size  ) {
            int check;
            check = Search (customers[size], SName);
            if (check == 1)
                Display(customers[size]);
        }
        break;

    case 4:
        for (size = 0; size < i; size  )
            Display(customers[size]);

        break;
    case 5: exit(0);
        break;
    }
} while (choice != 5);
system("pause");
return 0;
}

void Display(customerAccount ca) {
    cout << " Customer name:";
    cout << ca.Name << endl;
    cout << " Address:";
    cout << ca.Address << endl;
    cout << " city state and zip:";
    cout << ca.City_State_Zip << endl;
    cout << " Phone number:";
    cout << ca.phoneNumber << endl;
    cout << " Account balance:";
    cout << ca.actBalance << endl;
    cout << " Date of payment:";
    cout << ca.Payment << endl;
}

//declaration is incompatible with int search
int Search(customerAccount ca, string str) {
if (str.compare(ca.Name) == 0)
    return 1;
else
    return 0;
}
  

Комментарии:

1. Вы никогда не давали своей структуре имя, компилятор не знает, что это такое, черт возьми customerAccount .

2. Я исправил эту часть своего кода. Теперь, когда я запускаю программу, она прерывается после ввода адреса. Я не уверен, что происходит, Visual Studio не показывает мне никаких ошибок

3. Вы забыли прочитать ele от пользователя. Итак, у вас есть неинициализированная переменная, и начните вычислять с ней указатель.

4. Пожалуйста, не меняйте свой вопрос, исправляя его комментариями / ответами. Это меняет вопрос. Если после получения ответа на один вопрос у вас возникла другая проблема, задайте новый вопрос по этому поводу. Однако, если комментарии к удаленным ответам верны (что проблема связана с tydefs / structs) и фактическое решение отличается, и измененный вопрос лучше объясняет это — тогда игнорируйте этот комментарий. (И дайте мне знать, если хотите.)

Ответ №1:

 case 2: int ele;
  

В этой строке у вас неинициализированная переменная, которая вызывает вашу ошибку.