我试图从矢量中分配一个带字符串的字符串。我创建了字符串并尝试从向量中分配索引的值:
1 #include "poker.h"
2 #include <iostream>
3 #include <stdlib.h>
4 #include <time.h>
5 #include <vector>
6 #include <string>
7
8 hand::hand(std::vector<std::string>* cards) {
9 cards_used = 0;
10 cards_left = 52;
11
12 srand(time(NULL)); //Initialize random seed
13
14 //Card 1
15 int rand_num = rand() % ( cards_left - 1 ); //Set random number
16
17 //Set value and suit
18 std::string temp = cards[rand_num]; //Problem here
19 c1_value = std::stoi(temp.substr(0, 1));
20 }
我收到此错误消息:
poker.cpp: In constructor ‘hand::hand(std::vector<std::basic_string<char> >*)’:
poker.cpp:18:35: error: conversion from ‘std::vector<std::basic_string<char> >’ to non-scalar type ‘std::string {aka std::basic_string<char>}’ requested
std::string temp = cards[rand_num];
^
任何帮助将不胜感激。
答案 0 :(得分:3)
您正通过指针将cards
向量传递给您的手构造函数。通过引用传递它:
hand::hand(std::vector<std::string>& cards)
或者,如果你想继续将cards
作为指针传递,那么你需要正确地推导它以向其中插入一个值。
std::string temp = (*cards)[rand_num];
or
std::string temp = cards->at(rand_num);