【问题标题】:C++ can't call methodC++不能调用方法
【发布时间】:2015-11-22 09:39:23
【问题描述】:

我有以下代码,但不知道如何调用 AMethod() 函数。谁能帮我这个? 谢谢你

template<>
class AClass < std::shared_ptr<AnObject> >
{
public:
    std::shared_ptr<AnObject> AMethod() const
    {
        //DoStuff
        return std::make_shared<AnObject>(x);
    }
};

我尝试了类似的方法,但没有成功:

AClass < std::shared_ptr<AnObject> > instance(); 
 std::shared_ptr<AnObject> result = instance.AMethod();

我在实例的第二行收到“错误:表达式必须具有类类型”。

【问题讨论】:

  • 你需要一些实例来调用它的方法。你的问题太宽泛,或者说不清楚,你真的需要花几天时间在Programming in C++上阅读整本书;我们无法在几段的回答中教你。
  • 这就是我的想法,我尝试了以下方法,但没有成功:AClass > instance(); std::shared_ptr 结果 = instance.AMethod();
  • 请编辑您自己的问题,不要评论它。把cmets留给别人
  • C++11(感谢auto)和旧版本的标准有所不同。
  • 为什么不起作用?给出编译器的错误信息。顺便说一句,您的问题在您第一次编辑后仍然不清楚,您最好给出一个独立的小例子,并说明AClass 模板到底是什么。

标签: c++ templates methods


【解决方案1】:
AClass < std::shared_ptr<AnObject> > instance(); 

不创建AClass &lt; std::shared_ptr&lt;AnObject&gt; &gt; 的实例。

它声明了一个名为instance() 的函数,它不接受任何参数并返回一个AClass &lt; std::shared_ptr&lt;AnObject&gt; &gt;

这被称为“最令人头疼的解析”。

删除()

【讨论】:

  • 非常感谢,我现在觉得自己好蠢。来自Java,这不是我第一次犯这个错误。谢谢
  • 没关系。从 Java 中恢复需要时间;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多