Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何声明类的结构向量_C++_Oop - Fatal编程技术网

C++ 如何声明类的结构向量

C++ 如何声明类的结构向量,c++,oop,C++,Oop,我有一个有结构的班级。如何创建这种结构类型的向量 以下是一个例子: class A { public: struct mystruct { mystruct (int _label, double _dist) : label(_label), dist(_dist) {} int label; double dist; }; } 在这个类“A”中有一个函数,如下所示 myfunc ( vector<mys

我有一个有结构的班级。如何创建这种结构类型的向量

以下是一个例子:

class A {
public:
    struct mystruct {   
        mystruct (int _label, double _dist) : label(_label), dist(_dist) {}   
        int label;
        double dist;
    };
}
在这个类“A”中有一个函数,如下所示

   myfunc ( vector<mystruct> &mystry );
myfunc(vector&mystry);

所以我的问题是,我需要用结构向量来调用这个函数。如何声明这一点?

使用范围运算符

std::vector<A::mystruct>
std::vector
使用范围运算符

std::vector<A::mystruct>
std::vector
A类
{
公众:
结构mystruct
{   
mystruct(int _-label,double _-dist):label(_-label),dist(_-dist){
int标签;
双区;
};
void myfunc(std::vector和mystr);
}
只要您在mystruct之后声明myfunc,您就可以了。

class A
{
公众:
结构mystruct
{   
mystruct(int _-label,double _-dist):label(_-label),dist(_-dist){
int标签;
双区;
};
void myfunc(std::vector和mystr);
}
只要您在mystruct之后声明myfunc,您就可以了。

当您声明A的方法时,
mystruct
已经在范围内,因此您可以无条件地使用它:

class A {
public:
    struct mystruct {   
        mystruct (int _label, double _dist) : label(_label), dist(_dist) {}   
        int label;
        double dist;
    };

    void myfunc(std::vector<mystruct> &);
}
A类{
公众:
结构mystruct{
mystruct(int _-label,double _-dist):label(_-label),dist(_-dist){
int标签;
双区;
};
void myfunc(std::vector&);
}
但是当您调用它时,您所称的参数类型取决于您所处的位置:

void free_function() {
    A a;
    std::vector<A::mystruct> arg;
    a.myfunc(arg);
}

void A::another_method() {
    std::vector<mystruct> arg;
    this->myfunc(arg);
}
void free_函数(){
A A;
std::向量arg;
a、 myfunc(arg);
}
void A::另一个_方法(){
std::向量arg;
此->myfunc(arg);
}
当您声明A的方法时,
mystruct
已在范围内,因此您可以无条件地使用它:

class A {
public:
    struct mystruct {   
        mystruct (int _label, double _dist) : label(_label), dist(_dist) {}   
        int label;
        double dist;
    };

    void myfunc(std::vector<mystruct> &);
}
A类{
公众:
结构mystruct{
mystruct(int _-label,double _-dist):label(_-label),dist(_-dist){
int标签;
双区;
};
void myfunc(std::vector&);
}
但是当您调用它时,您所称的参数类型取决于您所处的位置:

void free_function() {
    A a;
    std::vector<A::mystruct> arg;
    a.myfunc(arg);
}

void A::another_method() {
    std::vector<mystruct> arg;
    this->myfunc(arg);
}
void free_函数(){
A A;
std::向量arg;
a、 myfunc(arg);
}
void A::另一个_方法(){
std::向量arg;
此->myfunc(arg);
}

您必须包括
结构
所在的所有名称空间和类范围。您必须包括
结构
所在的所有名称空间和类范围。但是,在类中使用this指针调用成员函数是毫无用处的。只需使用:myfunc(arg)。它不做任何事情,但有时更容易阅读。在这里,我想强调自由函数和方法之间的对称性。然而,在类中使用this指针调用成员函数是毫无用处的。只需使用:myfunc(arg)。它不做任何事情,但有时更容易阅读。在这里,我想强调自由函数和方法之间的对称性。谢谢你的回答。我创建了一个向量并将其传递给函数。我收到以下错误“无法打开文件进行写入!”@2vision2该错误与您使用矢量完全无关。你可能应该把它作为一个单独的问题发布。谢谢你的回复。我创建了一个向量并将其传递给函数。我收到以下错误“无法打开文件进行写入!”@2vision2该错误与您使用矢量完全无关。你可能应该把它作为一个单独的问题发布。