作为我的家庭作业,我制作了这个小c ++程序。我不允许更改主体。 我设法做到
yield
但是现在我做不到
board1[{1, 1}] = 'X';
我知道它不起作用,因为c是char类型,并且我正在向其中返回“ CellValue”。但是我不明白如何使'='以另一种方式工作并使它以char形式返回值当我希望它位于'='的右侧时。 整个代码:
char c = board1[{1, 2}];
我刚刚开始用C ++编程,所以现在允许我使用一些太聪明的东西。我想从你这里得到一些帮助。谢谢!
答案 0 :(得分:0)
如果类的实例是作业的右侧,而左侧的类型不是同一类型,则必须提供用户定义的转换才能使它起作用。
有两种方法可以进行分配。第一个是左侧对象可以提供一个赋值运算符或转换构造函数,该赋值运算符或转换构造函数采用右侧类型的对象。这是您对CellValue::operator=()
所做的事情,但是在LHS为char
时无法使用,因为您无法修改内置类型。
第二种方式是,右边的对象为左边的类型(或可以分配给它的其他东西)提供了一个转换运算符。这可以通过将operator char()
添加到您的CellValue
类中来完成:
class CellValue{
public:
operator char() const{
return value;
}
// rest as before
};
这可以是const
成员函数,因为它仅读取数据。