如何在c ++中调用包含复制构造函数的类的参数构造函数为private?

时间:2017-03-24 10:16:34

标签: c++ constructor copy-constructor

我有一个由参数化构造函数组成的类,我需要在创建对象时调用它。该类还包含一个私有拷贝构造函数,用于限制为其创建对象。现在如何调用此类的参数构造函数。我想我们可以创建一个指向类的指针。但是如何使用引用调用参数构造函数?

我的计划:

#include<iostream>
#include<string>
using namespace std;

class ABase
{
protected:
    ABase(string str) {
        cout<<str<<endl;
        cout<<"ABase Constructor"<<endl;
    }
    ~ABase() {
    cout<<"ABASE Destructor"<<endl;
    }
private:
    ABase( const ABase& );
    const ABase& operator=( const ABase& );
};


int main( void )
{
    ABase *ab;//---------How to call the parameter constructor using this??

    return 0;
}

2 个答案:

答案 0 :(得分:1)

您需要的语法是ABase *ab = new ABase(foo);其中foostd::string个实例或std::string可以构建的内容,例如const char[]字面值,例如"Hello"

请勿忘记致电delete以释放记忆。

(如果您不需要指针类型,也可以写ABase ab(foo)。)

答案 1 :(得分:1)

你不能这样做。因为你的ctor是protected。请参阅(与您的州无关,但仅了解更多信息):Why is protected constructor raising an error this this code?