2012-10-05 56 views
0

好吧,我有一个应该是一个简单的问题,但没有任何我在网上寻找的例子,只有在同一个文件中做所有事情的同一个例子的副本。我试图做一个接口和一个方法来使用它,就像下面的例子一样,但是当我编译时,我得到了来自Visual Studio的未解析的外部符号错误。关于我在做什么的任何想法都是错误的?C++接口抛出未解析的外部符号错误

IFoo.h

class IFoo { 
public: 
    virutal int Bar(); 
} 

foo.h中

class Foo : public IFoo { 
    virtual int Bar(); 
} 

Foo.cpp中

int Foo::Bar() { 
    return 1; 
} 
+1

-1 for“virutal” - 发布显示问题的实际代码。 –

+0

这是代码。我正在寻找一个如何正确执行此操作的示例,因为此示例会引发错误。 –

回答

0

在IFoo.h,虚拟方法必须是纯虚:

class IFoo { 
public: 
    virtual int Bar() = 0; 
}; 

或者,提供一个默认实现,无论是inline还是IFoo.cpp。但是,这会使我误导前缀,因为它不会像界面那样起作用。

+0

该死的,我只是想念“= 0”,我没有意识到这是工作所必需的。感谢您指出了这一点。 –

1

假设未解决的符号用于int IFoo::Bar(),请注意该函数被声明为可调用函数,并且确实可以调用它。使用

p->IFoo::Bar() 

也就是说,你要么需要定义此功能,或者您需要声明它不存在:

virtual int Bar() = 0; 

(仍允许你定义它,虽然)。