Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;对象引用_C++_Object - Fatal编程技术网

C++ C++;对象引用

C++ C++;对象引用,c++,object,C++,Object,我有一段代码: 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[]);

我有一段代码:

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”

正确答案是什么


谢谢

没有看到
这个
的定义,我想说你可能想替换
void Omplir(Edi)通过
无效Omplir(Edi*const)
并相应地修改
Omplir
的定义。

您对
Omplir的声明

void Omplir(Edi);
表示此方法接受一个
Edi
对象

C++ >代码> < <代码>是指针。您应该在类中使用它

如果您想让它工作,您应该取消对它的引用:

wmmbid02.Omplir(*this);

标准说明了
指针:

9.3.2此指针[类.此]

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


因此,在您的情况下,您似乎是类
Edi
的成员函数,
应为
Edi*

类型,或者定义指向指针的参数
void Omplir(Edi)

void Omplir(Edi*);
或将此
作为参考传递:

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

但这取决于你到底想做什么。通常我更喜欢尽可能通过引用传递。

传递一个
Edi
而不是
Edi*
wmmbid02.Omplir(*this)
将清除错误,但可能这并不完全是你想要的。
*这个
而不是
这个
作为开始。也许是我,但名字很忠实。。。