2016-04-07 2 views
0

Итак, мне нужно спасти эту большую программу для моего назначения, но я не могу понять ошибку, которую я получаю для этого массива строк в функции.
При = от stockSymbol = «» «» я получаю ошибку
«Ошибка: тип значения„Const символ *“не может быть назначено к объекту типа„станд :: строка *“
я включал где определена строка и функция. У кого-нибудь есть идеи о том, что происходит и как это исправить?Строка массива в функции error

int menu() 

{ 
int actents = 0; 

int opt = 0; 

string stockSymbol[MAXENTS]; 

double stockShares[MAXENTS]; 

double stockPrice[MAXENTS]; 

int opt; 

string opts; 

void resetPortfolio(string stockSymbol[], double stockShares[], double stockPrice[], int & actents) 

{ 
    // code logic to set all entries of the stock symbol array to "" 
    stockSymbol = "\"\""; 
    // code logic to set all entries of the other arrays to 0 
    stockShares = 0; 
    stockPrice = 0; 
    // set the number of actual entries in the arrays (actents) to 0 
    actents = 0; 
    return; 
} 
+1

Вам не нужно '' \ "\" "? – anishthecoder

+0

Поскольку C++ является немного странным, 'string stockSymbol []' в объявлении функции делает указатель 'stockSymbol' * строкой' string' *, а не массивом 'string', хотя он выглядит как массив' string's. – immibis

+0

Я предполагаю, что вы имели в виду «" \ "\" "'и помещали его туда, но теперь он говорит ту же ошибку выше, за исключением того, что int не может быть назначен std :: string. –

ответ

0

Ваша функция menu не закрыта.

string stockSymbol[MAXENTS]; 

double stockShares[MAXENTS]; 

double stockPrice[MAXENTS]; 

Должны ли они находиться внутри или снаружи menu?

"""" означает строку "". Если вы пишете 2 строки вместе, это означает конкатенацию строк.

Для установки заполнения массивов со значением,

for(var i=0; i<MAXENTS; i++) 
    stockSymbol[i]="\"\""; 
for(var i=0; i<MAXENTS; i++) 
    stockShares[i]=0; 
for(var i=0; i<MAXENTS; i++) 
    stockPrice[i]=0; 
1

stockSymbol, stockShares и stockPrice все указатели на первый элемент массива. Вы не можете просто назначить им, чтобы установить значения своих элементов. Вместо этого вам нужно перебрать массивы и установить значение каждого элемента.

void resetPortfolio(string stockSymbol[], double stockShares[], double stockPrice[], int & actents) 
{ 
    for (int i = 0; i < actents; ++i) { 
     // code logic to set all entries of the stock symbol array to "" 
     stockSymbol[i] = ""; 
     // code logic to set all entries of the other arrays to 0 
     stockShares[i] = 0; 
     stockPrice[i] = 0; 
    } 
    // set the number of actual entries in the arrays (actents) to 0 
    actents = 0; 
} 

Существуют и другие проблемы с кодом, который вы опубликовали. menu() никогда не закрывается, и вы на самом деле не звоните resetPortfolio().

+0

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

+0

@ReyH хорошо отрезать несвязанные вещи, но также важно, чтобы оставшиеся части имели смысл. –

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