2017-01-24 466 views
-1
using namespace std; 

    void game(); 

int party_rnd(int &party_members) 
{ 
    char roll_party; 

    cout << "Please [R]oll the dice to decide how many will dare enter with you.\n"; 

    cin >> roll_party; 

    if (roll_party == 'R') { 
     srand(time(NULL)); 
     party_members = rand() % 6 + 1; 
     cout << "You have been joined by " << party_members << " of your friends!\n\n"; 
    } 
    else { 
     cout << "\nYou can't not roll!\n"; 
     system("Pause"); 
     system("cls"); 
     game(); 
    } 

    return 0; 
} 

string party_name(int &party_members, string (&party_names)) 
{ 
    string* party_name = new string[party_members]; 
    for (int i = 0; i < party_members; i++) { 
     cout << "Please enter a name for your party member: "; 
     cin >> party_name[i]; 
     cout << endl; 
    } 

    cout << "Your party consists of: "; 
    cout << endl; 

    for (int x = 0; x < party_members; x++) { 
     cout << party_name[x] << "\n"; 
    } 

    return *party_name; 
} 

void game() 
{ 
    system("cls"); 

    int party_members = 0; 
    string* party_names = new string[party_members]; 

    cout << "Welcome to Professor Scott and the Temple of Doom!\n"; 
    cout << "Before you can enter you must roll a dice to see how many of your friends will follow you!\n\n"; 

    party_rnd(party_members); 

    party_name(party_members, party_names[party_members]); 

    for (int y = 0; y < party_members; y++) { 
     cout << party_name[y] << "\n"; 
    } 

    return; 
} 

Im einen Fehler in Zeile 67 "cout < < party_name [x] < < "getting \ n";" Ausdruck muss ein Zeiger auf einen vollständigen Objekttyp sein. Jede Hilfe wäre großartig, da ich in C++ ziemlich neu bin und nicht sicher bin, was genau mit dem Code falsch ist. Ich habe ein bisschen gegoogelt, aber nichts hat wirklich Sinn ergeben, warum ich nicht in der Lage bin, das String-Array korrekt zurück zu bekommen.Ausdruck muss ein Zeiger auf ein vollständiges Objekttyp C++

+0

versuchen Sie party_name-> at (x). – user1438832

+0

Es tut mir leid, ich verstehe nicht wirklich, was du damit meinst. Meinst du damit, Zeile 67 durch etwas zu ersetzen, oder was könnten Sie ein bisschen mehr geben? –

+0

'partyname' ist eine Funktion. Sie können '[y]' nicht auf den Namen einer Funktion anwenden. Auch Ihre 'partyname' Funktion hat mehrere große Probleme. Um dies zu beheben, sollten Sie eine Liste von Namen durch 'vector ' anstelle von Zeigern und neuen darstellen. Außerdem ist es natürlicher, den Rückgabewert einer Funktion zu verwenden, um Werte zurückzugeben, anstatt Referenzparameter zu verwenden. –

Antwort

0
#include <iostream> 
#include <cstdlib> 
using namespace std; 

void game(); 

int party_rnd(int &party_members) 
{ 
char roll_party; 

cout << "Please [R]oll the dice to decide how many will dare enter with you.\n"; 

cin >> roll_party; 

if (roll_party == 'R') { 
    srand(time(NULL)); 
    party_members = rand() % 6 + 1; 
    cout << "You have been joined by " << party_members << " of your friends!\n\n"; 
} 
else { 
    cout << "\nYou can't not roll!\n"; 
    system("Pause"); 
    system("cls"); 
    game(); 
} 

return 0; 
} 

string party_name(int &party_members, string (&party_names)) 
{ 
string* party_name = new string[party_members]; 
for (int i = 0; i < party_members; i++) { 
    cout << "Please enter a name for your party member: "; 
    cin >> party_name[i]; 
    cout << endl; 
} 

cout << "Your party consists of: "; 
cout << endl; 

for (int x = 0; x < party_members; x++) { 
    cout << party_name[x] << "\n"; 
} 

return *party_name; 
} 

void game() 
{ 
system("cls"); 

int party_members = 0; 
string* party_names = new string[party_members]; 

cout << "Welcome to Professor Scott and the Temple of Doom!\n"; 
cout << "Before you can enter you must roll a dice to see how many of your friends will follow you!\n\n"; 

party_rnd(party_members); 

party_name(party_members, party_names[party_members]); 

for (int y = 0; y < party_members; y++) { 
    cout << party_names[y] << "\n"; 
} 

return; 
} 

Ich könnte den obigen Code kompilieren. Überprüfen Sie hier: changed-code

Verwandte Themen