把矢量放在矢量里面

时间:2015-10-14 18:49:24

标签: c++ object vector

我一直在尝试创建一个可以在向量中存储向量的函数,并且我遇到了问题。我已经使它适用于int的向量,但现在我试图使用对象填充它并且我有问题。

这是我的头文件:

class Animal
{
public:
    Animal();
    ~Animal();

    Animal(int , int, std::string);

    void setLength(int);
    void setWeight(int);
    void setLocation(std::string);

    int getLength();
    int getWeight();
    std::string getLocation();
private:
    int length_;
    int weight_;
    std::string location_;
};

这是我的cpp文件:

Animal::Animal(int length, int weight, std::string location) : length_(length), weight_(weight), location_(location)
{} 

void Animal::setLength(int length){
    length_ = length;
}
void Animal::setWeight(int weight){
    weight_ = weight;
}
void Animal::setLocation(std::string location){
    location_ = location;
}

int Animal::getLength(){
    return length_;
}
int Animal::getWeight(){
    return weight_;
}
std::string Animal::getLocation(){
    return location_;
}

Animal::~Animal()
{
}

这是我的主要内容:

int _tmain(int argc, _TCHAR* argv[])
{
    Animal test;

    int i = -1;
    int d = -1;
    std::vector<std::vector<Animal> >N;
    std::vector<Animal>M;
    std::vector<Animal>D;

    while (i++ != 5)
    {
        M.push_back(test);
        M[i].setLength(20);
        M[i].setLocation("test");
        M[i].setWeight(30);
    }

    N.push_back(M);

    while (d++ != 5)
    {
        D.push_back(test);
        D[i].setLength(111);
        D[i].setLocation("test2");
        D[i].setWeight(222);
    }

    N.push_back(D);

    std::cout << N[0][4].getLength() << std::endl;
    std::cout << N[1][4].getLength();

    return 0;
}

当我尝试构建时,我得到两个错误:

  

错误LNK2019:未解析的外部符号&#34; public:__ thiscall Animal :: Animal(void)&#34;函数_wmain

中引用了(?? 0Animal @@ QAE @ XZ)

并且

  

错误LNK1120:1个未解析的外部

你们中的任何人都能看到我做错了什么吗?也许你们中的一些人可以更好地解决我的问题。

1 个答案:

答案 0 :(得分:0)

链接器错误可能会通过在您的默认构造函数旁边放置花括号来消失......

while (d++ != 5)
{

    D.push_back(test);

    D[i].setLength(111);
    D[i].setLocation("test2");
    D[i].setWeight(222);
}

此外,我发现您的代码中存在错误。要修复它,请更改此...

while (d++ != 5)
{

    D.push_back(test);

    D[d].setLength(111);
    D[d].setLocation("test2");
    D[d].setWeight(222);
}

到此......

{{1}}

它会正常工作。