全部
我敢打赌,这是一个经常被问到的问题。但每次都在不同的背景下提出。这是我的问题:我在 VS2012 Express 中有一个项目。该项目包括几个头文件。把整个项目贴在这里是没有意义的,所以我只是给出一个简单的结构。
在头文件 Header.h 中,我有一个父类 Sim,其定义如下:
class Sim
{
protected:
// some member data
public:
Sim(int x, int y, A a);
vector<int> return_parameters(A a); // problems happen at this function
// class A is defined in another header file and properly included here
// function return_parameters has no definition, thus is an abstract function
}
Sim::Sim(int x, int y, A a)
{// some operations}
然后我有从 Sim 派生的公共类 Sim_son
class Sim_son: public Sim
{
private:
// some member data
public:
Sim_son(int x, int y, A a, int z);
vector<int> return_parameters(A a);
};
Sim_son::Sim_son(int x, int y, A a, int z): Sim(x,y, a)
{
// some operations
}
vector<int> Sim_son::return_parameters(A a)
{
return a.someData;
}
在 main() 中,我的代码如下:
void main()
{
// some operations
Sim_son Obj_son(x, y, a, z);
Obj_son.return_parameters(a) //PROBLEM HAPPENS
}
编译器给出一个LNK2019 错误,表示函数 Sim_son::Sim_son(void) 中引用的未解析的外部符号 Sim::return_parameters。
我评论了“Obj_son.return_parameters(a)”这一行,然后错误消失了。所以我想这就是麻烦的根源。
谁能帮我解决这个问题?提前谢谢了。
最好的问候龙