C ++接口抛出未解析的外部符号错误

时间:2012-10-05 22:55:57

标签: c++ interface lnk2001

好吧,我有一个应该是一个简单的问题,但实际上没有我在网上寻找的例子,只有同一个例子的副本,它在一个文件中完成所有事情。我正在尝试创建一个接口和方法来使用它,就像下面的例子一样,但是当我编译时,我从visual studio得到了未解决的外部符号错误。关于我做错了什么的想法?

IFoo.h

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

foo.h中

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

Foo.cpp中

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

2 个答案:

答案 0 :(得分:1)

假设未解析的符号用于int IFoo::Bar(),请注意,此函数被声明为可调用函数,并且实际上可以调用它,例如,使用

p->IFoo::Bar()

也就是说,您需要定义此函数,或者需要将其声明为不存在:

virtual int Bar() = 0;

(但仍允许您定义它。)

答案 1 :(得分:0)

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

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

或者,提供内联或IFoo.cpp中的默认实现。但是,这会使I前缀误导,因为它不会像界面那样起作用。