在过去的一两年中使用C#之后,我的C++已经有点生疏了。任何方式在派生类中使用基构造函数?
如果我有以下几点:
class CBase
{
public:
CBase(LPCTSTR pszArg1, LPCTSTR pszArg2, LPCTSTR pszArg3);
virtual ~CBase();
// Etc...
};
class CDerived : CBase
{
// Etc...
};
看来我不能创建的CDerived
一个实例。
no instance of constructor "CDerived::CDerived" matches the argument list
我知道我可以明确地创建一个派生的构造函数:
CDerived::CDerived(LPCTSTR pszArg1, LPCTSTR pszArg2, LPCTSTR pszArg3)
: CBase(pszArg1, pszArg2, pszArg3)
{
}
但是,这似乎是一个大量的输入,特别是如果我打算从基类派生出许多类。
基类仍然需要这些或那些参数。有没有办法不必为每个派生类重写这个参数,“暴露”基础构造函数,或者我必须像上面所做的那样绝对地做到这一点?
提供一个默认的构造函数? – NathanOliver
@NathanOliver:这是如何得到我的基类的参数? –
@JonathanWood:没有。但是默认的构造函数可以将自己的参数值传递给基类。 –