| | |
error C2446: '==' : no conversion from 'int' to 'char *'
Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved |
•
•
Join Date: May 2008
Posts: 96
Reputation:
Solved Threads: 0
Help I am having the following error:
error C2446: '==' : no conversion from 'int' to 'char *'
When I tried the following it ignores my counter and I am not sure why. This is a serious problem because it creates and infinite loop that keeps printing.
My code is the following:
error C2446: '==' : no conversion from 'int' to 'char *'
When I tried the following it ignores my counter and I am not sure why. This is a serious problem because it creates and infinite loop that keeps printing.
C++ Syntax (Toggle Plain Text)
if(char(seating[openSeat + potential]) == '#') counter2++;
My code is the following:
C++ Syntax (Toggle Plain Text)
void Tickets::displayOptions() { cout << "The following blocks are available: " << endl; for(int openRow = 1; openRow < row; openRow++) { cout << "row " << openRow << ": "; for(int openSeat = 1; openSeat < seat; openSeat++) { int neededSeatsOpen = (seat-1) - (openSeat - 1); if(neededSeatsOpen >= qty) { int counter2 = 0; for(int potential = qty - 1; potential >= 0; potential--) { if(char(seating[openSeat + potential]) == '#') { counter2++; } } if(counter2 = qty) { for(int available = 0; available <= qty - 1; available++) { cout << seating[openSeat + available] << " "; } } } // end if } // nested end for }// end for } // end function display Options
•
•
Join Date: Jul 2005
Posts: 1,681
Reputation:
Solved Threads: 264
If seating is an array of char, then there is no need to cast seating[] to type char because seating [] is a char.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
•
•
Join Date: May 2008
Posts: 96
Reputation:
Solved Threads: 0
•
•
•
•
If seating is an array of char, then there is no need to cast seating[] to type char because seating [] is a char.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
•
•
Join Date: May 2008
Posts: 96
Reputation:
Solved Threads: 0
•
•
•
•
The compiler believes that seating is an integer. The OP placed the cast there to try to get rid of the error message.
Can we see the class definition where seating is declared? Is there anything else between the class and the variable? Did you #include the header in the .cpp file?
Hope this helps.
Basically if I do not use the cast char to convert it and only use this:
C++ Syntax (Toggle Plain Text)
if(seating[openSeat + potential] == '#') { counter2++; }
.cpp(259) : error C2446: '==' : no conversion from 'int' to 'char *'
.cpp(259) : error C2040: '==' : 'char [31]' differs in levels of indirection from 'int'
Hence I left my code as with the char but there is still something strange going on in that displayOptions() function that produces garbage and that is why I cannot use my function.
Please help. My code is the following:
C++ Syntax (Toggle Plain Text)
#include <iostream> using std::cout; using std::cin; using std::endl; #include <iomanip> using std::setw; using std::setprecision; #include <cstdlib> // contains prototypes for functions srand and rand using std::rand; using std::srand; #include <ctime> // contains prototype for function time using std::time; #include "Tickets.h" // include definition of class Tickets //constructor Tickets::Tickets(int initial) { // initialize the prices array int price = 90; for (int zone = 1; zone < row; zone++) { prices[zone] = price; price -= 5; } // initialize the actual seating array for(int eachRow = 0; eachRow < row; eachRow++) for(int eachSeat = 0; eachSeat < seat; eachSeat++) seating[eachRow][eachSeat] = '#'; // initialize the available rows array for(int row_i = 1; row_i < row; row_i++) rowSeats[row_i] = seat - 1; qty = initial; ticketPrice = initial; totalPrice = initial; currentSalesAmount = initial; seatsSold = initial; theaterAvailability = (row-1)*(seat-1); } void Tickets::displaySeats() { // creater the header cout << "Seats: " << setw(2); int counter = 1; do { if(counter <= 9) cout << counter << setw(2); else cout << counter << setw(1); }while(++counter <= 30); // show the seat availability for(int row_i = 1; row_i < row; row_i++) { if(row_i <= 9) { cout << "\nrow 0" << row_i << ": "; } else { cout << "\nrow " << row_i << ": "; } for (int seat_j = 1; seat_j < seat; seat_j++) cout << seating[row_i][seat_j] << " "; } cout << endl; } void Tickets::purchaseTickets() { srand ( (unsigned)time ( 0 ) ); int counter = rand() % (row - 6); do { qty = rand() % (seat-21); while(qty == 0) { qty = rand() % (seat-21); } cout << "\nEnter the ticket quantity: " << qty; // validateQty(qty); if(theaterAvailability != 0) { seatProcess(); totalPrice = 0; } }while(--counter > 0); } void Tickets::seatProcess() { if(checkQtyAvailability(qty) == true) { if(qty == 1) { makeSelection(); } else { //displayOptions(); for(int choices = qty; choices > 0; choices--) { makeSelection(); } } } // end if displayTotalTicketPrices(); displayTheaterStats(); displaySeats(); } void Tickets::makeSelection() { int selectedRow, selectedSeat; selectedRow = rand() % row; while(selectedRow == 0) { selectedRow = rand() % row; } cout << "\nSelect a row: " << selectedRow << endl; selectedSeat = rand() % seat; while(selectedSeat == 0) { selectedRow = rand() % row; } cout << "Select a seat: " << selectedSeat << endl; validateSelection(selectedRow, selectedSeat); } void Tickets::validateSelection(int chosenRow, int chosenSeat) { if(seating[chosenRow][chosenSeat] == '*') { cout << "Sorry that seat is taken. Please make another selection."; makeSelection(); } else { seating[chosenRow][chosenSeat] = '*'; displayTicketPrice(chosenRow); compute(chosenRow); } } bool Tickets::checkQtyAvailability(int desiredQty) { bool answer = false; if (theaterAvailability == 0) { cout << "Sorry the theater is sold out." << endl; answer = false; } else if(theaterAvailability >= desiredQty) answer = true; else if(theaterAvailability < desiredQty) { qty = rand() % seat; while(qty == 0) { qty = rand() % seat; } cout << "Sorry there are less seats available then the quantity entered. \n Re-enter the ticket quantity: " << qty; // validateQty(qty); seatProcess(); } return answer; } void Tickets::compute(int purchasedRow) { //totalPrice += prices[purchasedRow]; //currentSalesAmount += prices[purchasedRow]; totalPrice += ticketPrice; currentSalesAmount += ticketPrice; seatsSold++; theaterAvailability--; rowSeats[purchasedRow]--; } double Tickets::getTotalPrice() { return totalPrice; } double Tickets::getCurrentSalesAmount() { return currentSalesAmount; } void Tickets::displayTicketPrice(int purchasedSeat) { ticketPrice = prices[purchasedSeat]; cout << "The purchased ticket price is: $" << setprecision(2) << ticketPrice << endl; } void Tickets::displayTotalTicketPrices() { cout << "\nYour total amount due for the " << qty << " tickets is: $" << setprecision(2) << getTotalPrice() << endl; } void Tickets::displayTheaterStats() { cout << "\nCurrent ticket sales amount: $" << setprecision(2) << getCurrentSalesAmount() << endl; cout << "Seats sold: " << seatsSold << endl; cout << "\n Row" << setw(22) << "Seats Available" << endl; cout << "------- --------------" << endl; for(int rowAnalysis = 1; rowAnalysis < row; rowAnalysis++) cout << setw(4) << rowAnalysis << setw(17) << rowSeats[rowAnalysis] << endl; cout << "Seats available in the entire theater: " << theaterAvailability << endl; cout << endl; } void Tickets::displayOptions() { cout << "\nThe following blocks are available: " << endl; for(int openRow = 1; openRow < row; openRow++) { cout << "row " << openRow << ": "; for(int openSeat = 1; openSeat < seat; openSeat++) { int neededSeatsOpen = (seat-1) - (openSeat - 1); if(neededSeatsOpen >= qty) { int counter2 = 0; for(int potential = qty - 1; potential >= 0; potential--) { if(char(seating[openSeat + potential]) == '#') { counter2++; } } if(counter2 == qty) { for(int available = 0; available <= qty - 1; available++) { cout << seating[openSeat + available] << " "; } } } } } } // end function display Options bool Theater::test() { Tickets testTicket(0); bool answer2 = false; if(testTicket.prices[9] == 50) { answer2 = true; } else { answer2 = false; } return answer2; }
Also, below is my header file:
C++ Syntax (Toggle Plain Text)
class Tickets { public: const static int row = 16; const static int seat = 31; double prices[row]; char seating[row][seat]; int rowSeats[seat]; Tickets(int); //constructor void displaySeats(); void purchaseTickets(); void compute(int); void displayTotalTicketPrices(); void displayTicketPrice(int); void displayTheaterStats(); // void validateQty(int); void seatProcess(); bool checkQtyAvailability(int); void makeSelection(); void validateSelection(int, int); void displayOptions(); double getTotalPrice(); double getCurrentSalesAmount(); private: int qty; double ticketPrice; double totalPrice; double currentSalesAmount; int seatsSold; int theaterAvailability; }; class Theater { public: static bool test(); };
Last edited by QuantNeeds; Jul 7th, 2008 at 9:30 pm.
Ah, it is because seating is declared as a 2D array, but you are only indexing one dimension. Hence the error.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
Hope this helps.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
if(seating[openRow][openSeat + potential] == '#')Hope this helps.
•
•
Join Date: May 2008
Posts: 96
Reputation:
Solved Threads: 0
•
•
•
•
Ah, it is because seating is declared as a 2D array, but you are only indexing one dimension. Hence the error.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
if(seating[openRow][openSeat + potential] == '#')
Hope this helps.
Thanks again
![]() |
Similar Threads
- Help with adding users (C++)
Other Threads in the C++ Forum
- Previous Thread: logic or format nightmare
- Next Thread: Debug assertion failed
| Thread Tools | Search this Thread |
api array arrays based beginner binary bitmap c++ c/c++ calculator char class classes code compile compiler console conversion count data delete deploy desktop developer directshow dll download dynamic encryption error file forms fstream function functions game getline givemetehcodez google graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java lib linkedlist linker linux list loop looping loops map math matrix memory news node number output parameter pointer problem program programming project proxy python read recursion recursive return string strings struct temperature template templates test text text-file tree unix url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets






