c++ - c++ 中 vector<someClass> 的 setter 函数

标签 c++ operator-overloading copy-constructor

我有以下类(class):

class Vertex {

public: float X;
        float Y;
        float Z;

Vertex (float first, float second, float third){
          X=first;
          Y=second;
          Z=third;
    }

};


class Obj {


  vector<Vertex>vertexCoordinates;

  vector<vector<int>> faces;

  vector <vector<float>> faceNormals;

  vector <vector<float>> faceCenters; 

  string objName; 

  int vertexCount, faceCount, edgeCount;

  float maxX, minX, maxY, minY, maxZ, minZ, dx, dy, dz;


    setVertexCoordinates(vector <Vertex> vertexCoordinatesP) {

          vertexCoordinates = vertexCoordinatesP; //??
         // How should the assignment be defined? 

    }

};

我需要在这里创建一个拷贝构造函数吗?为 VertexObj 重载运算符 =

最佳答案

由于您的 Vertex只有基本的非指针成员,你不一定需要为它定义一个复制构造函数:编译器会generate one for you通过它们的复制构造函数复制元素(在 float 的情况下,通常是按位复制)。 std::vector 的复制构造函数和赋值运算符是预定义的并且可以在这里工作,因为您没有存储指针。

(对于 std::vector<Vertex *> ,所有权语义不明确,因此您可能需要以不同的方式进行复制。)

关于c++ - c++ 中 vector<someClass> 的 setter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4478708/

相关文章:

c++ - 为什么类型转换运算符不适用于继承的类?

c++ - 如何控制运算符[]分配的值

c++ - 在 C++ 中复制构造函数和运算符 =

c++ - 复制构造函数知识

c++ - 从模板创建通用打印函数以打印原始数据类型变量的值

c++ - UTF-8 编码错误,需要帮助转换文本

c++ - 为什么将 std::bind 与 lambda 一起使用时生成的对象如此之大?

c++ - 这是未定义的行为吗?为什么?

c++ - 全局新运算符重载

c++ - gcc 何时编译未使用的模板代码?