我一直在尝试创建一个可以在向量中存储向量的函数,并且我遇到了问题。我已经使它适用于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个未解析的外部
你们中的任何人都能看到我做错了什么吗?也许你们中的一些人可以更好地解决我的问题。
答案 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}}
它会正常工作。