首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象在c ++中使用受保护的构造函数实例化。

对象在c ++中使用受保护的构造函数实例化。
EN

Stack Overflow用户
提问于 2014-03-21 10:43:33
回答 2查看 183关注 0票数 0

我有这个c++类,我想初始化这个类型的对象:

代码语言:javascript
复制
class MyClass

{
public:

   /**
     *  Creates an instance of this class.
     *  @return Pointer to the created object.
     */    
static MyClass * Create ();


protected:
    // Explicit protected Constructor 
    //and Copy-Constructor, use Create() to create an  instance of this object.
    MyClass();

}

为了创建一个实例,我执行了以下操作:

代码语言:javascript
复制
static MyClass * m_object = myClass.Create();

但我收到了那些警告和错误:

代码语言:javascript
复制
   warning C4832: token '.' is illegal after UDT 'MyClass'

   error C2275: 'MyClass' : illegal use of this type as an expression

   error C2228: left of '.Create' must have class/struct/union

如何正确实例化此对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-21 10:45:52

在C++中,静态变量/方法使用范围解析(::)操作符进行访问。

将代码更改为

代码语言:javascript
复制
static MyClass * m_object = MyClass::Create();
票数 4
EN

Stack Overflow用户

发布于 2014-03-21 10:49:57

要调用静态成员,必须使用类名而不是对象名。对象实例化应该是这样的。

代码语言:javascript
复制
MyClass *m_object = MyClass::Create();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22556530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档