gpt4 book ai didi

c++ - 我的 operator<< 重载代码有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:22 27 4
gpt4 key购买 nike

我正在尝试使 << 过载- 类的运算符,以便我可以使用 std::cout用它。我复制了一些代码 found online这样做,但我无法让它工作。
我收到一条错误消息:

error C2662: 'nspace::ElementCopy::name' : cannot convert 'this' pointer 
from 'const nspace::ElementCopy' to 'nspace::ElementCopy &'

错误在<< - 运算符实现:(参见我的代码注释)


这是我的头文件,ElementCopy.h:

#pragma once
#include <string>
#include <iostream>

namespace nspace
{
class ElementCopy
{
public:
std::string name();
};

std::ostream& operator<< (std::ostream& stream, const ElementCopy& arg)
{
stream << arg.name(); //compiler error at this line
return stream;
}
}

这是我的短代码文件,ElementCopy.cpp:

#include "ElementCopy.h"

namespace nspace
{
std::string ElementCopy::name()
{
return "string";
}
}

我无法弄清楚这个错误。为什么我得到它?该运算符重载没有 "this"说到。我该如何解决这个问题?

最佳答案

您想制作 name()方法 const :

class ElementCopy
{
public:
std::string name() const;
};

这样,您将被允许在 const 上调用它在你的引用 operator<<

关于c++ - 我的 operator<< 重载代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com