编译C++代码时链接器错误

gol*_*ean 1 c++ linker-errors

首先,请原谅我对C++的不了解.我是一个真正的初学者!

我想在MS VS2005上编译一个C++代码.下面的代码我得到如下链接器错误: -

在一个函数(某个类方法)定义中,它具有用于内存分配的代码,如:

CDecoderUnit *du = new CDecoderUnit(); //<<error is shown at this line 
Run Code Online (Sandbox Code Playgroud)

这个CDecoderUnit是一个在头文件中定义的类

class CDecoderUnit : public IPrepareDecoderUnit
{
   CDecoderUnit();
   ~CDecoderUnit();
...
...
other class definition.

..
..
}
Run Code Online (Sandbox Code Playgroud)

实际错误是: -

错误LNK2019:未解析的外部符号"public:__thiscall CDecoderUnit :: CDecoderUnit(void)"(?? 0CDecoderUnit @@ QAE @ XZ)在函数"private:long __thiscall CLSDEnc :: CreateIPrepareDecoderUnit(struct IPrepareDecoderUnit*&)const"中引用(? CreateIPrepareDecoderUnit @ CLSDEnc @@ ABEJAAPAUIPrepareDecoderUnit @@@ Z)lsdenc.obj

谁能指点我解决这个问题?

Tal*_*man 5

当你写作时,CDecoderUnit();你正在做两件事:

  • 声明一个默认构造函数(不实现它,只是声明它).
  • 导致编译器自行生成默认构造函数.

如果需要初始化任何东西,你需要定义构造函数,或者删除允许编译器自己生成一个的声明.请注意,如果您确实实现了构造函数,那么如果要从类外部创建对象,则必须将其公之于众.