gpt4 book ai didi

尝试创建标记 vector 时出现 C++ 错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:35:24 25 4
gpt4 key购买 nike

我目前正在编写 Stroustrup 的“原则与实践”一书,学习如何使用 C++ 进行编程。我在他们介绍 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);

关于尝试创建标记 vector 时出现 C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com