初始化构造函数中的结构向量
Initialising a vector of struct in a constructor
我不知道如何在构造函数中初始化结构向量。有人可以给我指点吗?^^
这是我的结构:
struct Point {
int x;
int y;
};
这是我的头文件:
class ShapeTwoD {
private:
string name;
bool containsWarpSpace;
vector<Point> vertices;
public:
ShapeTwoD();
ShapeTwoD(string,bool,vector<Point>);
virtual string getName();
virtual bool getContainsWarpSpace();
virtual string toString();
vector<Point> points;
virtual double computeArea() = 0;
virtual bool isPointInShape(int,int) = 0;
virtual bool isPointonShape(int,int) = 0;
virtual void setName(string);
virtual void setContainsWarpSpace(bool);
};
这是我.cpp文件:
ShapeTwoD::ShapeTwoD() {
name = "";
containsWarpSpace = true;
vertices = "";
}
ShapeTwoD::ShapeTwoD(string name, bool containsWarpSpace,vector<Point>vertices) {
this->name = name;
this->containsWarpSpace = containsWarpSpace;
this->vertices = vertices;
}
它给了我这个错误:
ShapeTwoD.cpp:12:错误:与"((ShapeTwoD*)this)->ShapeTwoD::vertices = "' 中的"operator="不匹配 /usr/include/c++/4.4/bits/vector.tcc:156:注意:候选者是:std::vector<_Tp,_Alloc>& std::vector<_Tp,_Alloc>::operator=(const std::vector<_Tp,_Alloc>&) [_Tp = Point,_Alloc = std::allocator]
根据要求:
错误消息指出没有 vertices = ""
的定义。然而,向量已经存在(并且是空的),因此不得初始化。
如有必要,可以通过vertices.push_back("");
将空字符串附加到向量
看起来您正在尝试将向量初始化为空。
编译器将为您创建一个空向量,因此您不需要这样做。
ShapeTwoD 实例中的数字和布尔值应初始化为合理的默认值,就像 containsWarpSapce
变量一样。
ShapeTwoD::ShapeTwoD()
containsWarpSpace = true;
}
您可以改用初始值设定项列表。 对于此示例来说,这并不重要,但如果对象是非平凡类型,则是一个很好的做法。
// Preferred: use initializer list.
ShapeTwoD::ShapeTwoD()
: containsWarpSpace(true)
{}
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员