我有一个类,其中包含一个向量,如果字符串,所以我可以有无限的答案(我用它来研究基本上进行模拟测试)。但是,当我创建thingy时,它会在试图在向量中创建值时对我生气。我已经尝试了很多方法来实现它,但它不能。
#include <iostream>
#include <vector>
using namespace std;
string input;
class answer {
public:
vector<string> answers;
};
class qANDa {
public:
string question;
answer answers;
string correct;
};
void askQuestion (qANDa bob) {
cout << bob.question;
getline(cin, input);
input[0] = tolower(input[0]);
if (input == bob.correct) {
cout << "Correct!\n";
} else {
cout <<"Incorrect. Study more. Loser.\n";
};
}
vector<qANDa> thingys;
int main(int argc, const char * argv[]) {
qANDa thingy = {"The correct answer is \"A\". What's the correct answer.", {} "A"}
askQuestion(thingys.at(0));
}
我已经尝试将字符串放在括号内,我尝试在括号内使用括号,我将字符串放在括号内的括号内,但它都不起作用。
答案 0 :(得分:1)
您的班级answer
无法仅使用空括号{}
进行初始化,您可以提供默认构造的右值参考:
qANDa thingy =
{ "The correct answer is \"A\". What's the correct answer."
, answer()
, "A" }
还请注意,即您正在致电
askQuestion(thingys.at(0));
thingys
不包含任何元素。将其更改为
qANDa thingy =
{ "The correct answer is \"A\". What's the correct answer."
, answer()
, "A"};
thingys.push_back(thingy);
askQuestion(thingys.at(0));
答案 1 :(得分:0)
qANDa
有三个字符串,因此初始值设定项看起来像{"one", "two", "three"}
。
哦对不起,我没有看到中间是answer
类型,这是一个vector<string>
,而不是一个string
。如果它是一个单独的字符串,上面就可以了。就这样做。
qANDa thingy = {"The correct answer is \"A\". What's the correct answer.", answer(), "A"};
另请注意最后添加的分号。
当askQuestion
代码存储input[0]
中的字符时,存在问题,因为无法保证全局字符串变量input
的长度大于&gt; =。
要解决此问题,我建议将input
的类型从std::string
更改为char
。
使用全局变量来传达函数结果充满了危险。相反,请考虑使用函数结果。您将在C ++教科书中找到它们。