c++ - 重载运算符=? C++
问题描述
我在尝试将我创建的类中的对象插入字符时遇到问题。我创建了一个类名 Element 作为更大程序的一部分,但是当我尝试重载 operator= 以便我可以进入 char 变量时,我在 Element obj 中得到的 char 没有任何作用......
元素.h
class Element {
private:
char val;
public:
Element();
Element(char newVal); //check input - throw execption
~Element();
friend ostream& operator<<(ostream& os, const Element& obj);
void setElement(char newVal);
char getElement();
void operator= (const Element newVal);
void operator= (char newVal);
};
元素.cpp
#include "Element.h"
Element::Element()
{
val ='.';
}
Element::Element(char newVal)
{
if (newVal!='X' && newVal!='O'&& newVal!='.'){
inputExecption error;
error.what();
} else{
val=newVal;
}
}
Element::~Element()
{
}
void Element::setElement(char newVal)
{
if (newVal!='X' && newVal!='O'&& newVal!='.'){
inputExecption error;
error.what();
} else{
val=newVal;
}
}
char Element::getElement()
{
return val;
}
ostream& operator<<(ostream& os, const Element& obj)
{
return os << obj.val;
}
void Element::operator= (const Element Value){
val = Value.val;
}
void Element::operator= (char newVal){
if(val != 'X' && val != 'O'){
inputExecption a;
a.what();
}
val = newVal;
}
正如我所说,我想做的是:
Element x='X';
char c = x; //(c=x.val)
cout<<c<<endl;//Will print X
谢谢!:)
解决方案
换句话说,您正在尝试将 type 的对象转换为 typeElement
的对象char
。您可以为此使用转换运算符:
class Element {
// ...
operator char() const { return val; }
};
Element
赋值运算符仅在赋值的左侧使用实例时才有效。
推荐阅读
- google-oauth - 尝试在 Google API 中为访问令牌交换授权码时出现“redirect_uri_mismatch”错误
- python - 仅替换匹配的单词
- xamarin.forms - 如何以用户可以找到的 xamarin 形式将文件写入内部存储
- java - KafkaConsumer.commitAsync() 行为具有比以前更低的偏移量
- go - 从 golang 连接到 rabbitmq 的 Uri 模式
- c# - ef core 为多个实体设置同一个值对象
- android - 屏幕底部的内容在某些手机中不可见
- npm - 如何使用 1.2.x 版本从 web3 获取特定帐户?
- ejabberd - Ejabberd:如何通过用户所属的 API 获取 muc_rooms / disco_items 列表?
- javascript - 在输入框中打印带有上标标记的符号