C++:无法将向量传递给构造函数
C++: Unable to pass vector to the constructor
所以我是C++的新手,我被赋予了创建一个类及其头文件test.h和test.cpp的任务。现在我需要创建一个构造函数,它将doubles的向量作为参数,并使用它来初始化对象。然而,我不知道如何准确地做到这一点。这是我在头和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);
并运行程序,我得到了不匹配的操作员错误。
您需要将第三个参数作为向量传递,或者作为可以在向量的构造函数中使用的东西传递。
如果你想要一个元素为988的矢量,那么使用:
Dog d("Kelly", 3, { 988 });
这使用了一个初始值设定项列表,可以从该列表构造向量。
这将突出另一个问题,即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++中使用向量时,如何调用构造函数和析构函数
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 通过构造函数创建的所有对象都具有相同的向量
- 如何在 C++ 中使用它的构造函数初始化 unique_ptrs 的 2D 向量?
- 在 c++ 中具有向量的双向链表构造函数
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- 使用向量初始化参数化构造函数的对象数组
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- 初始化构造函数C++中结构的向量
- 在具有向量的类构造函数中进行析构函数调用
- 在 c++ 的构造函数中分配对象向量时出错
- 在类和构造函数中使用向量时出现分段错误
- 为什么调用复制构造函数来构造空unique_ptr向量?
- 有没有一种简单的方法可以在对象向量上调用构造函数?
- C++:无法将向量传递给构造函数
- STL向量上出现奇怪的复制构造函数错误
- 使用所述填充构造函数初始化向量中的向量
- C++:在向量<int> vn{MyAllocator<int>(a)} 中调用哪些构造函数?
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法