刚刚开始教OOP并且在我的程序中出现了一个奇怪的错误,就像在我的例子中一样。我正在使用XCode并收到stange错误:
架构x86_64的未定义符号:“Foo :: Foo()”,引用
using namespace std;
class Foo
{
public:
Foo();
~Foo();
Foo(const Foo& f2);
Foo(int data);
Foo& operator =(const Foo& f2);
protected:
int m_Data;
};
Foo::Foo(int data)
{
m_Data = data;
cout << "constr1" << endl;
}
Foo::Foo(const Foo& f2)
{
m_Data = f2.m_Data;
cout << "constr2" << endl;
}
Foo::~Foo()
{
cout << " destructor";
}
Foo& Foo::operator=(const Foo& f2)
{
m_Data = f2.m_Data;
cout << "prisvaivanie" << endl;
return *this;
}
Foo test(Foo arg)
{
return arg;
}
int main(int argc, const char * argv[])
{
Foo f1(1);
Foo f2(f1);
Foo f3 = f1;
Foo f4;
f4 = f1;
Foo f5 = test(f1);
return 0;
}
它有什么用?
答案 0 :(得分:1)
您声明一个不带参数但没有定义参数的构造函数,而Foo f4;
需要它。