2014-02-11 100 views
0

刚开始教OOP并在我的程序中出现奇怪的错误,看起来像我的例子。我使用Xcode和接收STANGE错误:Xcode未定义的架构符号

未定义的符号体系结构x86_64的: “富::富()”,引用

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; 
} 

这里是什么地方?

回答

1

您声明了一个不带参数但不定义一个参数的构造函数,Foo f4;需要它。

+0

谢谢,我明白了。是否有任何可能将Foo :: Foo()与默认构造函数关联? – user3297482

+0

您可以摆脱'Foo();'并将'int'构造函数更改为'Foo(int data = 0);',这取决于您实际上希望将'm_Data'设置为默认值。 –

+0

(请注意,这与“Xcode”无关,尽管有你的标签,而且实际上只是一般的C++)。 –

相关问题