我有这段代码:

Wmmbid02 wmmbid02;
wmmbid02.Omplir(this);
return wmmbid02;


和Wmmbid02.h:

class Wmmbid02: public Idoc {

public:
    Wmmbid02();
    //void EscriureFitxer();
    void Omplir(Edi);

private:
    Segment crearSegment(string a[], string b[]);
    Info crearInfo(string);
    //virtual void LlegirFormat(string);
};


Visual Studio,返回和错误,因为无法将'Edi * const'转换为'Edi'。

正确答案是什么?

谢谢

最佳答案

您对Omplir的声明

void Omplir(Edi);


表示此方法采用Edi对象。

在C ++中,this是一个指针。您应该在一个类中使用它。

如果您希望它起作用,则应取消引用它:

wmmbid02.Omplir(*this);




该标准说明了this指针:


  9.3.2 this指针[class.this]
  
  在非静态(9.3)成员函数的主体中,关键字this是一个prvalue表达式,其值是为其调用该函数的对象的地址。在类X的成员函数中,此类型为X *。如果成员函数被声明为const,则其类型为const X *,[...]


因此,在您的情况下,您似乎位于类Edi的成员函数中,而this的类型应为Edi*

关于c++ - C++对象引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18868004/

10-13 02:53