c++ - C++:无法将向量传递给构造函数
问题描述
所以我是 C++ 的新手,我的任务是创建一个类及其头文件 test.h 和 test.cpp。现在我需要创建一个构造函数,它将一个双精度向量作为参数并使用它来初始化对象。但是,我无法弄清楚如何准确地做到这一点。这是我在标题和 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
in 头文件。这是因为任何#include <Dog.h>
最终都会std
在顶层使用命名空间的人。看看这个答案:https ://stackoverflow.com/a/1453605/1517648
推荐阅读
- php - PHP 正则表达式 preg_match:未知修饰符
- spring-boot - 将新的 Vue js 3 应用程序集成到 Spring Boot/thymeleaf 应用程序中
- lua - Lua 中嵌套数组的行为
- javascript - 如何让我的价值在不和谐 webhook 的描述中返回
- c - C中的数字和字母验证
- mongodb - 如何在 AWS DocumentDB 中为组替换 $$ROOT - 不支持的功能:$$ROOT
- accessibility - 用于可访问性测试的 Cypress-axe 插件中的误报
- android - 我们如何为 android 应用程序包含本机库符号?
- artifactory - JFrog Artifactory 初始化失败,出现错误 500
- mysql - MySQL 8.0 复制“未知数据库”错误导致复制停止