这行是什么意思?我们可以为属性以外的对象分配一些东西吗?

What does this line mean?, can we assign something to an object other than attribute?

你好,这是我的第一个问题。

我真的是 C++ 的新手,也是面向对象编程的新手。

所以,我的任务目前需要包装这个C++库,代码是:

#include "cavc/polylineoffset.hpp"

int main(int argc, char *argv[]) {
    (void)argc;
    (void)argv;
    // input polyline
    cavc::Polyline<double> input;
    // add vertexes as (x, y, bulge)
    input.addVertex(0, 25, 1);
    input.addVertex(0, 0, 0);
    input.addVertex(2, 0, 1);
    input.addVertex(10, 0, -0.5);
    input.addVertex(8, 9, 0.374794619217547);
    input.addVertex(21, 0, 0);
    input.addVertex(23, 0, 1);
    input.addVertex(32, 0, -0.5);
    input.addVertex(28, 0, 0.5);
    input.addVertex(39, 21, 0);
    input.addVertex(28, 12, 0);
    input.isClosed() = true;

    // below this is the line that i dont understand
    std::vector<cavc::Polyline<double>> results = cavc::parallelOffset(input, 3.0);
}

所以,我不明白的是最后一行。我理解的基本 C++ OOP 是我们可以创建一个对象并可以为其分配一个属性:

class MyClass {       // The class
    public:             // Access specifier
    int myNum;        // Attribute (int variable)
    string myString;  // Attribute (string variable)
};

myClass myObject;
myObject.myNum = 1;
myObject.myString = "something";

但是,我在最后一行(来自库)中不明白的是它是从 class 创建一个对象,它是 results 但在那之后,直接分配给一些东西:

results = cavc::parallelOffset(input, 3.0);

这是头文件:

https://github.com/jbuckmccready/CavalierContours/blob/master/include/cavc/polylineoffset.hpp

有问题的行正在调用名为 parallelOffset 的函数,该函数是在名为 cavc 的命名空间中声明的。函数 returns 类型为 std::vector<cavc::Polyline<double>> 的对象,因此该行声明了该类型的对象并将其设置为等于函数返回的值。

语法与例如

相同
float x = sin(3.0);

...只是有一个更复杂的 return-type(std::vector<cavc::Polyline<double>>,a.k.a cavc::Polyline<double> 个对象的向量)

std::vector<cavc::Polyline<double>> results = cavc::parallelOffset(input, 3.0);