0

好吧,我有一个简单的问题,但实际上没有我在网上寻找的示例,只有相同示例的副本,它在一个文件中完成所有操作。我正在尝试制作一个界面和一种使用它的方法,如下例所示,但是当我编译时,我从 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;
}
4

2 回答 2

1

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

p->IFoo::Bar()

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

virtual int Bar() = 0;

(不过,它仍然允许您定义它)​​。

于 2012-10-05T23:00:06.357 回答
0

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

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

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

于 2012-10-05T22:58:56.500 回答