好吧,我有一个应该是一个简单的问题,但实际上没有我在网上寻找的例子,只有同一个例子的副本,它在一个文件中完成所有事情。我正在尝试创建一个接口和方法来使用它,就像下面的例子一样,但是当我编译时,我从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;
}
答案 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前缀误导,因为它不会像界面那样起作用。