【发布时间】:2013-03-15 22:31:45
【问题描述】:
class Base
{
protected:
template<typename TFunc>
void m_vProcess(TFunc& func) const
{
BasePrivateClass<TFunc> baseprivateobj(func);
// rest of code
}
private:
template<typename TFunc>
class BasePrivateClass
{
public:
BasePrivateClass(TFunc& obj) :m_obj(oParam)
{}
private:
TFunc& m_obj;
};
};
这是我的派生类:
class Derived: public Base
{
private:
class DerivedPrivateClass
{
public:
explicit DerivedPrivateClass(int **p): m_objDerived(poParam)
{}
private:
int** m_objDerived;
};
};
从 Derived 类中的一个函数,我试试这个:
DerivedPrivateClass obj(param);
this->m_vProcess(obj);
我收到多重定义符号的链接器错误 - 符号在基类和派生类中都定义。
我不知道是什么导致了链接器错误。有人可以帮忙吗?
【问题讨论】:
-
什么是链接器错误?
-
@Alon :符号是多重定义的。基类的许多函数/变量都存在于基类和派生类的目标文件中。
-
你错过了;在类声明结束时
-
我在代码中有它...我在此处提出问题时错过了它...抱歉...将编辑并放置它们...
-
我会尝试发布一个简化的问题,也许创建一个示例,而不是,这段代码有什么问题..