нет соответствующей функции для вызова 'std::basic_string‹char›::basic_string С++

Эй, я делаю "Сделай свою собственную приключенческую игру!" Теперь, кроме того, что мне нужно пройти через игру с дырками, я хотел создать систему чит-кодов, и теперь я пытаюсь объявить, что строка равна более чем 6 словам. Я не вижу, в чем проблема. Я сделал это только с двумя слов и не получил никаких ошибок, когда я сделал то же самое с более чем двумя словами, и я получил ошибку.

Main.cpp|27|ошибка: нет соответствующей функции для вызова 'std::basic_string::basic_string(const char [4], const char [6], const char [5], const char [5], const char [ 6], const char [6])'|

Вот мой код:

#include <iostream>
//LVL1
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\Dog.h"
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\Dream.h"
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\GTFO.h"

using namespace std;

int Return();
int Continue();

int main(){

    cout << "Welcome to my 'MAKE YOUR OWN ADVENTURE GAME!!!'\n";
    cout << "Have Fun and enjoy the ride!\n";
    cout << "Would you like to put in a cheat code??\n";
    cout << "Yes or No, Cap Sensitive!\n";
    Return();
    return 0;
}

int Return(){
        std::string y("Yes","No");
        cin >> y;
if(y.compare("Yes")){
        cout << "Please Enter Cheat Code now\n";
        std::string z("Dog","Dream","GTFO","Path","Sword","Weird");
        cin >> z;
    if(z.compare("Dog")){
        Dog();
    }else if(z.compare("Dream")){
        Dream();
    }else if(z.compare("GTFO")){
        GTFO();
    }else if(z.compare("Path")){
        Path();
    }else if(z.compare("Sword")){
        Sword();
    }else if(z.compare("Weird")){
        Weird();
    }else{
    cout << "Invalid Cheat Code\n";
   }

}else if(y.compare("No")){
return Continue();
}else{
    cout << "Invalid Answer!\n";
    Continue();
}
}

int Continue(){

    cout << endl;
    cout << "You wake up and your house is on fire what do you do ??\n";
    cout << "Quick Grab The Dog = 0, GTFO = 1, Go back to sleep = any other number\n";
    int x;
    cin >> x;
    if(x == 0){
         Dog();
    }else if(x == 1){
         GTFO();
    }else{
         Dream();
    }
}

person Community    schedule 29.11.2013    source источник
comment
Я не уверен, что вы пытаетесь сделать, но поищите ссылку на std::string. Обратите внимание и на ==.   -  person chris    schedule 29.11.2013
comment
Для std::string нет конструктора, принимающего шесть аргументов.   -  person    schedule 29.11.2013
comment
Также нет конструктора, принимающего две строки. Тот, на который вы случайно наткнулись, - это конструктор пары итераторов, который, вероятно, приведет к сбою вашей программы, если она запустится.   -  person chris    schedule 29.11.2013


Ответы (1)


Ваша проблема здесь в вашем объявлении строки z, ваш код:

std::string z("Dog","Dream","GTFO","Path","Sword","Weird");

ваш компилятор не может найти конструктор для std::string, который принимает 6 аргументов, попробуйте вместо этого

std::string z("any string");

или потому что вы собираетесь инициализировать z просто

std::string z;

person Gibby    schedule 29.11.2013