在类中使用向量创建类

时间:2013-12-12 00:52:49

标签: c++ class vector

我有一个类,其中包含一个向量,如果字符串,所以我可以有无限的答案(我用它来研究基本上进行模拟测试)。但是,当我创建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));
}

我已经尝试将字符串放在括号内,我尝试在括号内使用括号,我将字符串放在括号内的括号内,但它都不起作用。

2 个答案:

答案 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 ++教科书中找到它们。