【问题标题】:Object instantiation with scope operator使用范围运算符进行对象实例化
【发布时间】:2020-03-18 00:32:56
【问题描述】:

我遇到了这样的代码:

SampleObject<int>* example = new SampleObject<int>::aMethod();

想不通,我不熟悉 c++。

谁能给我解释一下?

【问题讨论】:

  • C++ 是目前最复杂的计算机语言之一——没有任何备忘单可以随便拿出来写一个答案。花时间从一本好书中学习语言会更好。
  • 这段代码可能需要更多的上下文。根据所涉及的类型,单个语句本身可能意味着很多不同的事情。

标签: c++ object instantiation


【解决方案1】:
SampleObject<int>* example = new SampleObject<int>::aMethod();

只有当aMethodSampleObject 的成员类型别名,该别名命名为SampleObject 或另一个指针可通过继承转换的类型时,这才能是格式正确的。比如这样:

template<class T>
struct SampleObject{
    using aMethod = SampleObject;
};

谁能给我解释一下?

这没有多大意义;至少不是没有上下文。

【讨论】:

  • 谢谢,这是我的功课,我不想作弊。你写的那块空白让我完成它。所以除此之外,我不知道如何为这个问题添加更多上下文。但其余代码在该操作之后使用示例对象方法。
  • @brk 如果你复制正确,那么坦率地说,这似乎是一项非常愚蠢的家庭作业。
  • 这个可以帮助一点,aMethod()里面是这样的;模板 ...::aMethod(){ if (instance == 0){ ... } return instance; }
  • @brk 将aMethod 定义为一种方法(顾名思义),您的问题中带有new 的行格式不正确。看来练习坏了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2012-08-20
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多