new*_*ger 0 c++ operator-overloading char
我在尝试将我创建的类中的对象插入到char时遇到了麻烦.我创建一个类名称Element作为更大程序的一部分,但是当我尝试重载operator =以便我可以在char变量中获取我在Element obj中获得的char没有任何工作...
element.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);
};
Run Code Online (Sandbox Code Playgroud)
Element.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;
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,我要做的是:
Element x='X';
char c = x; //(c=x.val)
cout<<c<<endl;//Will print X
Run Code Online (Sandbox Code Playgroud)
谢谢!:)
换句话说,您正在尝试将类型Element的对象转换为类型的对象char.您可以使用转换运算符:
class Element {
// ...
operator char() const { return val; }
};
Run Code Online (Sandbox Code Playgroud)
赋值运算符仅在赋值Element的左侧使用实例时才有效.