Ciao a tutti, vi spiego subito il mio problema:
Un esercizio mi chiede di prendere in input delle stringhe e metterle in uno stack, successivamente stamparle nell'ordine nel quale sono state inserite.
Avevo pensato di creare un array dinamico string* str = new string[myStack.size], di copiare le varie stringhe e poi di stamparle in ordine inverso.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
stack<string> myStack;
//Prendo in input 10 stringhe
for (int x = 0; x < 10; x++)
{
string str;
cin >> str;
myStack.push(str);
}
int size = myStack.size(); //Size di myStack
string* str = new string[size]; //Array
//Copio il contenuto dello stack nell'array, e vuoto lo stack progressivamente
for (int x = 0; x < size; x++)
{
*(str + x) = myStack.top();
myStack.pop();
}
//Stampo in ordine inverso l'array
for (int x = size - 1; x >= 0; x--)
cout << *(str + x) << " ";
}
Questi sono i miei errori:
1. *(str + x) = myStack.top();
Nessun operatore "+" corrispondente agli operandi.
2. *(str + x) = myStack.top();
"+": non valido per class.
3. string* str = new string[size];
'str': 'std::string *' differisce da 'std::string' nei livelli dei riferimenti indiretti.
Ho provato lo stesso identico codice su cpp.sh e funziona perfettamente come voglio, in Visual Studio non funge D: