クラスのコンストラクターが保護されたプロパティの場合、そのクラスのオブジェクトは次の方法でクラスの外でインスタンス化できます。
1. 派生クラスでのインスタンス化: 派生クラスは基本クラスの保護されたメンバーにアクセスできるため、派生クラスのコンストラクター内で基本クラスのコンストラクターを呼び出してオブジェクトを作成できます。
class BaseClass {
protected:
BaseClass() {
// 构造函数的实现
}
};
class DerivedClass : public BaseClass {
public:
DerivedClass() : BaseClass() {
// DerivedClass 的构造函数可以调用 BaseClass 的构造函数
}
};
int main() {
DerivedClass derivedObject; // 使用派生类来实例化对象
}
2. ファクトリ関数を使用する: クラスのフレンドまたは別のクラスに静的ファクトリ関数を作成できます。この関数は、保護されたコンストラクタにアクセスして、クラスのインスタンスを返すことができます。
class MyClass {
protected:
MyClass() {
// 构造函数的实现
}
public:
static MyClass* createInstance() {
return new MyClass();
}
};
int main() {
MyClass* myObject = MyClass::createInstance(); // 使用工厂函数来实例化对象
}
上記のメソッドはすべて、保護されたアクセス制御をバイパスしてオブジェクトをインスタンス化することに注意してください。これらの方法を使用する場合は、設計とセキュリティを慎重に考慮し、必要な場合にのみ使用するようにする必要があります。