与结构矢量的结构

时间:2013-11-02 21:34:42

标签: c++ vector struct

对不起,标题听起来有些混乱,让我解释一下。

我有一个结构,它有一个结构矢量,如下所示:

struct foo {
int x;
vector < foo > bar;
};

但是当我尝试这种语法时,我收到“No Instance of Overloaded Method”的错误:

foo a;
foo b;
b.x = 3;
a.bar.push_back(b);

基本上,我只是想在ab之间创建“关系”,bar是包含foo所有相关实例的关系向量。< / p>

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

不幸的是,根据C ++标准,您的代码是非法的,因为您将不完整的类型作为模板参数传递给标准库,这通常是禁止的,std::vector没有例外一般规则。

Boost文档has a great explanation

您可以使用明确支持不完整类型的容器,如Boost那样,或使用std::vector<std::unique_ptr<foo>>,因为标准在20.9.1p5中说:

  

T的模板参数unique_ptr可能是不完整的类型。

答案 1 :(得分:-1)

可能是你的编译器,我没有给出任何错误或警告。

#include <iostream> 
#include <vector>
using namespace std;



struct foo {
int x;
vector < foo > bar;
};


int main()
{
foo a;
foo b;
b.x = 3;
a.bar.push_back(b);
cout<<a.bar[0].x;
    cout<<"\n";
return 0;
} 

enter image description here