gpt4 book ai didi

C++:无法将 vector 传递给构造函数

转载 作者:行者123 更新时间:2023-11-30 02:13:47 26 4
gpt4 key购买 nike

所以我是 C++ 的新手,我被赋予了创建类及其头文件 test.h 和 test.cpp 的任务。现在我需要创建一个构造函数,它将 double vector 作为参数并使用它来初始化物体。但是,我无法弄清楚如何准确地做到这一点。这是我在我的标题和 cpp 类中添加的内容,但出现错误

头文件:

#include <string>
#include <vector>
using namespace std;
class Dog
{
int age;
string name;
vector<long double> myVector;
public:

Dog();
Dog(string name, int age, vector<long double> myVector);
};
#endif // DOG_H

cpp文件:

using namespace std;
Dog::Dog()
{
cout << "Dog object created"<< endl;
}

Dog::Dog(string name, int age, vector<long double> myVector)
: name(name), age(age), myVector(myVector.push_back(myVector))
{
cout << name<<" "<< age <<" "<<myVector<< endl;
}

现在在我的主类中,如果我添加这个:

Dog d("Kelly",3,988);

然后运行程序,我得到了运算符(operator)错误的不匹配。

最佳答案

您需要将第三个参数作为 vector 传递,或者作为可以在 vector 的构造函数中使用的东西传递。

如果你想要一个包含一个元素 988 的 vector ,那么使用:

Dog d("Kelly", 3, { 988 });

这使用了 initializer list哪个 vector 可以是constructed来自。

这将突出另一个问题,即 myVector成员变量未在初始化列表中正确初始化。相反,这应该看起来像:

Dog::Dog(string name, int age, vector<long double> v) : name(name), age(age), myVector(v)

这会复制参数 v 中的元素进入myVector .

还建议不要有 using namespace std在头文件中。这是因为任何人 #include <Dog.h>将以 std 结尾顶层的命名空间。查看此答案:https://stackoverflow.com/a/1453605/1517648

关于C++:无法将 vector 传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58862164/

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