error: incompatible types in assignment. С++
Всем привет, столкнулся с проблемой: при попытке присвоить структурному массиву значения string, получаю ошибку:
error: incompatible types in assignment of 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'std::__cxx11::string [32] {aka std::__cxx11::basic_string<char> [32]}'
Вот исполняемый код:
#include <iostream>
#include <cstring>
#include <ctime>
using namespace std;
string randtitle()
{
srand(time(NULL));
string r[5] = {"n", "s", "g", "o", "c"};
return r[1 + rand() % 5];
};
string randartist()
{
srand(time(NULL));
string r[5] = {"v", "l", "m", "w", "e"};
return r[1 + rand() % 5];
}
string randstyle()
{
srand(time(NULL));
string r[5] = {"a", "h", "b", "r", "p"};
return r[1 + rand() % 5];
}
struct cdinfo
{
string title[32], artist[32], style[32];
int year, duration, cost;
}
int main()
{
srand(time(NULL));
int i, n = 10;
cdinfo g[n];
for(i = 0; i < n; i++)
{
g[i].title = randtitle();
g[i].artist = randartist();
g[i].style = randstyle();
g[i].year = 1990 + rand() * 2005;
g[i].duration = 30 + rand() % 50;
g[i].cost = 60 + rand() % 150;
}
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Ну у вас же, например
string title[32];
а вы пытаетесь присвоить массиву что?
g[i].title=randtitle();
Просто строку.
Вас же не удивляет, что
int a[10];
a = 5;
не сработает? тогда почему вы считаете, что можно присваивать массиву один элемент?...
Автор решения: Eugene_lamer
→ Ссылка
Решено. Вместо
string title[32],artist[32],style[32];
Нужно было записать
string title,artist,style;