我目前正在Stroustrup的“原理和实践”书中学习如何使用C++进行编程。我将介绍 token 并展示如何使用 token 。我试图做一个简单的测试,以确保我正确地构造了类,并正确使用了标记和 vector 。
以下是我所做的示例。
class Test{
public:
char kind;
double value;
Test(char ch)
:kind(ch), value(0){}
Test(char ch, double val)
:kind(ch),value(val){}
};
int main(){
vector<Test>testLoop;
for(char i = 'a'; i < 'k'; i++){
testLoop.push_back(i, 1);
}
cout << testLoop[5].kind << endl << testLoop[5].value;
}
我要完成的工作(我认为)是有一个对象 vector ,它们都获取类“Test”的成员,并执行一个循环,将其中的一些添加到 vector “testLoop”中(并将1放入所有值成员)然后打印出testLoop [5] .kind和testLoop [5] .value的值。
我得到的具体错误是:
|25|error: no matching function for call to 'std::vector<Test>::push_back(char&, int)'|
candidate expects 1 argument, 2 provided
欢迎任何批评和帮助! - 谢谢
最佳答案
std::vector::push_back
接受存储在 vector 中的类型的对象。所以在这种情况下,您需要
testLoop.push_back(Test(i, 1));
您还可以使用
std::vector::emplace_back
,它接受类型的构造函数参数并直接在 vector 中构造一个对象:testLoop.emplace_back(i, 1);
关于c++ - 尝试创建 token vector 时发生C++错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23951828/