<分区>
我已经使用 C++ 中的单例类进行了大量工作(对于一个类),现在对于一个非类项目,我正在尝试使用继承的类。
出于某种原因,我对构造函数链非常感兴趣。
考虑以下几点:
class SuperClass
{
string privateKey;
string publicKey;
string name;
public:
enum Key {PUBLIC, PRIVATE};
SuperClass(Key, string);
};
SuperClass::SuperClass(Key key, string theKey)
{
switch(key)
{
case PUBLIC: publicKey = theKey;
break;
case PRIVATE: privateKey = theKey;
break;
}
}
class SubClass : private SuperClass
{
public:
SubClass(string key);
};
SubClass::SubClass(string key)
: SuperClass(SuperClass::PUBLIC, key) // "SubClass" will only interact with the public key, in this case.
{
cout << "I'm instantiated!" << endl;
}
int main()
{
SubClass example ("thisIsThePublicKey");
return 0;
}
编译时出现如下错误:
error: no matching function ncall to SuperClass::SuperClass()
note: candidates are: SuperClass::SuperClass(SuperClass::Key, std::string)
为什么我会得到这个?我不是用过它说的候选构造函数吗? 我觉得我已经阅读了所有关于构造函数链的教程,但我仍然不明白我应该做些什么。
感谢您的帮助!