2

ユーザー入力によってサイズ変更される配列を作成しました。

    int spotInArray = 0;
    Bankcard* a = NULL;
    int n;           
    cout << "Enter number of cards" << std::endl;
    cin >> n;
    a = new Bankcard[n];

これは、ユーザーが削除するカードを選択するためのスイッチにある私のコードです。

            int choice;
            cout << "Enter Number of card you would like to delete: " << endl;
            cin >> choice;
                for (int i = n; i < spotInArray; i++)
                {
                    a[n] = a[n + 1];
                    a[choice - 1] = 0;
                }

a[choice - 1] = 0; でこのエラーが発生しています。

IntelliSense: これらのオペランドに一致する演算子 "=" はありません

これが完全なコードです。

int main()
{
//Bankcard bankcard1("Blue Card", 1, .05, 3000.00, 430.32, 200.35, 124.00);
int spotInArray = 0;
Bankcard* a = NULL;   // Pointer to int, initialize to nothing.
int n;           // Size needed for array
cout << "Enter number of cards" << std::endl;
cin >> n;        // Read in the size
a = new Bankcard[n];  // Allocate n ints and save ptr in a.
//for (int i=0; i<n; i++) {
//a[i] = bankcard1;
//bankcard1.show();
//}



int choice;

showMenu();

cin >> choice;

while (choice != 6)
{
    switch(choice)
    {
        case 1  :   {
                    string productName;
                    int cardNum;
                    double interestRate;
                    double maxLimit;
                    double outstandingBalance;
                    double purchaseAmount;
                    double paymentAmount;
                    cout << "Enter Card Name(No spaces, no special characters)" << std::endl;
                    cin >> productName;

                    cout << "Enter Number of Card" << std::endl;
                    cin >> cardNum;

                    cout << "Enter interest Rate" << std::endl;
                    cin >> interestRate;

                    cout << "Enter Max Limit" << std::endl;
                    cin >> maxLimit;

                    cout << "Enter Outstanding Balance" << std::endl;
                    cin >> outstandingBalance;

                    cout << "Enter Purchase Amount" << std::endl;
                    cin >> purchaseAmount;

                    cout << "Enter Payment Amount" << std::endl;
                    cin >> paymentAmount;
                    Bankcard bankcard1(productName, cardNum, interestRate, maxLimit, outstandingBalance, purchaseAmount, paymentAmount);
                    a[spotInArray] = bankcard1;
                    spotInArray++;
                    break;
                    }

        case 2  :   update();
                    break;
        case 3  :   {
                        int choice;
                        cout << "Enter Number of card you would like to delete: " << endl;
                        cin >> choice;
                        for (int i = 0; i < n; i++)
                        {
                            a[n] = a[n + 1];
                            a[choice - 1] = 0;
                        }
                    }
                    deleteCard();
                    break;
        case 4  :   overLoad();
                    break;
        case 5  :   {
                        for ( int i = 0; i < spotInArray; i++)
                        {
                            cout << a[i];
                        }
                    }
                    break;
        case 6  :   exit();
                    break;

    }
    showMenu();
    cout << endl;
    cin >> choice;
};

std::cin.get();
std::cin.get();
    return 0; 
}
4

2 に答える 2

2

表示していない他のコードがない限り、現在、このforループは実行されるべきではありません。

        for (int i = n; i < spotInArray; i++)
        {
            a[n] = a[n + 1];
            a[choice - 1] = 0;
        }

spotInArrayであり0、でi始まるからですn(そしてあなたもインクリメントiしています)。

その行で失敗してもよろしいですか?

于 2012-12-12T19:49:03.323 に答える
1

コードにはいくつかの誤りがあります。まず、a[n]無効です。サイズの配列の有効なインデックスnは 0 ~ n-1 です。自分でメモリを処理することは避けてください。std::listこの場合(頻繁に削除される場合)は代わりに使用してください。

 std::list<Bankcard> bCards(n);

 // Take input to for the cardToRemove.

 bCards.erase( bCards.begin() + cardToRemove );
于 2012-12-12T19:53:09.350 に答える