2013-03-21 3 views
-3

У меня возникли проблемы с использованием структур для программирования. Я хочу принять ввод в виде (целое число, символ), которое может повторяться несколько раз. Затем программа сохранит символ в массиве в месте, где указывает целое число. В настоящее время проблема заключается в том, что сообщение не определено и это местоположение не определено.Использование структур в C++

struct MessagePiece 
{ 
    int location; 
    char message; 
}; 

void readMessage(istream& in, Message message[]) 
{ 
    MessagePiece; 
    message[256]; 
    Message message; 

     while (!in.fail()) 
    { 
      in >> location; //I'm not sure why this counts as undefined as it is defined in the struct 

      if (location < 256, location >= 0) 
       in >> message[location]; 
     } 
return; 
}; 
+1

В коде есть некоторые довольно простые недостатки. Это может быть более продуктивным, если вы начнете читать [хорошую книгу] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). – juanchopanza

+4

Добро пожаловать в переполнение стека. Пока вы рассказали нам о своей проблеме, вы не поделились вопросом. Переполнение стека - это ** вопрос ** - и - ** ответ ** сайт. У вас есть конкретный вопрос? –

+1

Вы испытываете серьезную потребность в ознакомлении с *** очень основательными *** на C++. Это очень плохой вопрос ***, который вы только что опубликовали. – 2013-03-21 21:59:54

ответ

2

Это не определено, так как его location существует только в контексте объекта типа MessagePiece

MessagePiece mp; 
in >> mp.location; 
+0

Благодарим вас за помощь, а не за оскорбление моей способности кодировать. –

+0

Не говоря уже о том, что он использует переменное сообщение в нескольких точках, которое выдает ошибку –

+0

Не забудьте про его оператор if, который проверяет только одно условие. – 0x499602D2

0

Вы должны использовать & & вместо «» в вашей, если заявление для проверки состояние. Кроме того, эти линии:

MessagePiece; 
message[256]; 
Message message; 

должны быть написаны так:

MessagePiece messages[256]; //declaring an array of struct MessagePiece 
char message; // a char for storing input read from the user. 

Еще одна вещь, либо принять сообщение в качестве аргумента или объявить его в самой функции.

Просьба рассмотреть возможность чтения хорошей книги по программированию на C++.

+0

Но 'message' также является именем одного из параметров функции. Я думаю, что код выиграет от некоторых более содержательных имен (среди прочего). –

+0

да, вот почему я сказал, что либо объявляю его в функции, либо передал в качестве аргумента, но не оба –

Смежные вопросы