2013-04-29 36 views
0

我是一个n00b,所以对任何事都正确。链接器命令在Xcode中与纯虚拟对象失败

我一直在这个工作了几天,并已做了研究,但似乎无法解决问题。这是一个主要使用Visual Studio的编程类,我的许多同学都没有问题。虽然,我在Xcode上,所以也许它与此有关。基本上,我创建一个名为Geometric_Object与子类Circle.h和Rectangle.h一个纯粹的虚拟对象,然而,当我运行代码,我得到了以下错误:

Undefined symbols for architecture x86_64: 
"GeometricObject::GeometricObject()", referenced from: 
Circle::Circle() in main.o 
Rectangle::Rectangle() in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我以后丢失。由于我没有足够的信誉点,因此我无法发布所有链接,因此我必须在Dropbox上将它们压缩为一个。希望有人能绕过这个,所以没有人害怕解压缩内容。

https://dl.dropboxusercontent.com/u/82764116/Xcode.zip

+1

您无法“创建...纯虚拟对象”。你*可以*创建一个*具体*对象,它是纯虚拟类的*子类*。例如:'MyAbstractBaseClass * myObject = new MyConcreteSubclass()'。 – paulsm4 2013-04-29 21:15:07

+0

我只是试图实例化圆和矩形应该不是是纯虚拟的......他们应该吗? – 2013-04-29 21:47:37

+0

我认为你的文章说“我试图创建一个纯虚拟对象”。我说你不能。所以我想我们同意:)问:“GeometricObject()”是一个抽象类吗?你为它定义了一个构造函数吗?如果是这样,也许这就是问题所在:你为“GeometricObject()”定义了一个显式的构造函数,但是“Circle()”和“Rectangle()”都在寻找默认的(零参数)构造函数。 – paulsm4 2013-04-29 22:18:42

回答

0

的问题是完全错误的话。您尚未定义GeometricObject::GeometricObject()。您还没有在GeometricObject中定义许多其他方法,如析构函数,getColor,setColor等。

我不确定这些函数的定义在哪里,但它们不在代码中,已联系到。 (例如)Rectangle::Rectangle()。只需以相同的方式定义GeometricObject::GeometricObject()(以及所有其他缺失的定义)。

+0

你说得很完美:“问题正是错误所说的,你没有定义GeometricObject :: GeometricObject()。”然而,也许OP不需要*一个零参数的构造函数;也许他只是以编译器认为需要它的方式声明或使用变量。有很多方法可以发生。例如:http://www.velocityreviews.com/forums/t281655-newbie-constructor-of-the-base-class-not-being-found.html – paulsm4 2013-04-29 23:36:32

相关问题