为什么在尝试打印MySet::MySet()
时,它会给我vector
未定义的引用?任何帮助将非常感激。感谢
#include <iostream>
#include <vector>
using namespace std;
class MySet{
public:
MySet();
MySet(const vector<int> v3);
void printVector(const vector<int>& newMyVector);
};
int main()
{
vector<int> myVector;
myVector.push_back(1);
myVector.push_back(2);
MySet m;
m.printVector(myVector);
return 0;
}
void MySet::printVector(const vector<int>& newMyVector){
cout << "Vector: ";
for(unsigned int i = 0; i < newMyVector.size(); i++)
{
cout << newMyVector[i] << "|";
}
}
答案 0 :(得分:1)
为什么在尝试打印
MySet::MySet()
时,它会给我vector
未定义的引用?
您正在使用
创建MySet
的实例
MySet m;
使用默认构造函数。默认构造函数已在类中声明,但尚未定义。您可以通过定义来修复它。
MySet::MySet() {}
答案 1 :(得分:0)
您的程序不包含MySet构造函数的定义。构造函数的名称是MySet::MySet()
。因此,当您尝试创建对象的实例时,编译器不知道该怎么做。有几个解决方案:
MySet::MySet()
的行,以便 定义它。选项2的代码看起来像这样,在课外的某个地方:
MySet::MySet()
{
// do stuff here to construct object
}
选项3的代码看起来像这样,在类中的某个地方:
MySet()
{
// do stuff here to construct object
}