2017-01-24 5 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が\ n "は、[X] < < < < party_name COUT "67行でエラーを取得へのポインタでなければなりません";" expressionは完全なオブジェクト型へのポインタでなければなりません。どのような助けも素晴らしいです。私はC++には全く新しいので、コードに正確に何が間違っているか分かりません。私は公正なビットをグーグルで見つけましたが、何も本当になぜ私は文字列の配列を正しく戻って渡すことができないように意味がありませんでした。発現は、完全なオブジェクト型のC++

+0

try party_name-> at(x)。 – user1438832

+0

私は本当にあなたがそれを意味するものに従っていない申し訳ありません。あなたはそれを67行に置き換えることを意味しますか、もう少し詳細を与えることができますか? –

+0

'party_name'は関数です。関数の名前に '[y]'を使うことはできません。また、 'party_name'関数にはいくつかの重大な問題があります。これを修正するには、ポインタとnewを使う代わりに、 'vector 'で名前のリストを表現する必要があります。また、参照パラメータを使用する代わりに、関数の戻り値を使用して値を返す方が自然です。 –

答えて

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; 
} 

私は上記のコードをコンパイルすることができます。ここをクリック: changed-code

関連する問題