Getting a value from object passing it to an array

Apr 17, 2014 at 3:35pm
I am writing a program for a poker game.. I created a class to get cards and create deck.. the problem I am having now is how to deal 5 cards to an array to ve evaluated later. I want to call the array player1[5]. I tried to use pointer but I get the following error

49 31[Error] void value not ignored as it ought to be

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 #include <stdlib.h>
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;

const char* FaceString[13] = {"Ace", "2", "3", "4",
                              "5", "6", "7", "8",
                              "9", "10", "Jack", "Queen", "King"};

const char* SuitString[4] = {"Spades", "Hearts", "Diamonds", "Clubs"};
string player1[5];

class Card
{
public:
    int face;
    int suit;

    void toString() {
        cout<<FaceString[face]<<" of "<<SuitString[suit]<<endl;
    }

};

int main()
{    char *getCard;
	getCard = new char;
	
    // Create a deck of cards
    Card deck[52];

    for (int i = 0; i < 52; i++) {    
        deck[i].face = i % 13;
        deck[i].suit = i % 4;    
    }

    // Shuffle
    srand (unsigned(time(0)));
    random_shuffle(&deck[0], (&deck[0]+52));   

    // Display cards
    for (int j = 0; j < 52; j++) {  
        cout<< "Card_" << (j+1) << ": ";
        deck[j].toString();
    }

	for (int j = 0; j < 5; j++) {  
     getCard=deck[j].toString();
         }



    return 0;
} 
Last edited on Apr 17, 2014 at 4:18pm
Apr 17, 2014 at 5:46pm
Line 20: toString is declared as returning nothing (void).
Line 49: You're trying to assign the result of toString (nothing) to a pointer (getCard).
Apr 19, 2014 at 11:35pm
Thanks..@AbtstractionAnon
Apr 20, 2014 at 2:29am
closed account (zqMDizwU)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdlib.h>
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;

const char* FaceString[13] = {"Ace", "2", "3", "4",
                              "5", "6", "7", "8",
                              "9", "10", "Jack", "Queen", "King"};

const char* SuitString[4] = {"Spades", "Hearts", "Diamonds", "Clubs"};
string player1[5];

class Card
{
public:
    int face;
    int suit;

   int toString() {
	   if (face != NULL && suit !=NULL)
        cout<<FaceString[face]<<" of "<<SuitString[suit]<<endl;
	   return 0;
	}

};

int main()
{    char *getCard;
	getCard = new char;
	
    // Create a deck of cards
    Card deck[52];

    for (int i = 0; i < 52; i++) {    
        deck[i].face = i % 13;
        deck[i].suit = i % 4;    
    }

    // Shuffle
    srand (unsigned(time(0)));
    random_shuffle(&deck[0], (&deck[0]+52));   

    // Display cards
    for (int j = 0; j < 52; j++) {  
        cout<< "Card_" << (j+1) << ": ";
        deck[j].toString();
    }

	for (int j = 0; j < 5; j++) {  
		 int getCard = deck[j].toString();
         }
	
	system("pause>nul");
  
} 
Apr 20, 2014 at 5:56pm
Line 21: What is the purpose of this if statement? 0 is a valid value for both face and suit.

Line 23: What is the purpose of returning 0?

Line 30: Why are you using new to allocate a single char here? You have a memory leak because you never delete the char that you allocated.

Line 51: All 5 cards drawn are going to be stored in the same variable, overwriting each other. Since toString only ever returns 0, getCard will always contain 0.



Topic archived. No new replies allowed.