gpt4 book ai didi

c++ - 在派生类中使用基构造函数的任何方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:25 26 4
gpt4 key购买 nike

在过去一两年使用 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)
{
}

但这似乎需要大量输入,特别是如果我计划从基类派生许多类。

基类仍然以某种方式需要这些参数。有没有一种方法不必为每个派生类重写此参数,也许“公开”基构造函数,或者我必须绝对总是像上面那样做?

最佳答案

你可以使用 inheriting constructors (自 C++11 起):

class CDerived : public CBase
{
public:
using CBase::CBase;
// Etc...
};

那么你可以

LPCTSTR pszArg1;
LPCTSTR pszArg2;
LPCTSTR pszArg3;
CDerived d(pszArg1, pszArg2, pszArg3); // initialize CBase subobject by CBase::CBase(LPCTSTR, LPCTSTR LPCTSTR),
// then default-initialize other members of CDerived

关于c++ - 在派生类中使用基构造函数的任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com