有没有一种方法可以将转换运算符添加到基本类型?
例如:
Someclass x = (Someclass)7; //or even implicit casting
我知道可以在
someclass
中创建一个接受int的ctor,但是有没有办法向int添加转换运算符呢? 最佳答案
您的示例代码
SomeClass x = (SomeClass)7;
如果SomeClass具有接受int的构造函数,则进行编译:
struct SomeClass {
SomeClass(int) {}
};
int main() {
SomeClass x = (SomeClass)7;
}
如果您希望能够将SomeClass转换为整数,则需要运算符int()
#include <iostream>
class SomeClass {
int m_n;
public:
SomeClass(int n_) : m_n(n_) {}
SomeClass() : m_n(0) {}
operator int () { return m_n; }
};
int main() {
SomeClass x = 7; // The cast is not required.
std::cout << (int)x << "\n";
}
现场演示:http://ideone.com/fwija0
没有构造函数:
#include <iostream>
class SomeClass {
int m_n;
public:
SomeClass() : m_n(123) {}
operator int () { return m_n; }
};
int main() {
SomeClass x;
std::cout << (int)x << "\n";
}
http://ideone.com/xfsdjp
如果您问“如何使用转换运算符将int转换为SomeClass”,则最接近的是
operator=
#include <iostream>
class SomeClass {
public:
int m_n;
SomeClass() : m_n(0) {}
SomeClass& operator = (int n) { m_n = n; return *this; }
};
int main() {
SomeClass sc;
std::cout << "sc.m_n = " << sc.m_n << "\n";
sc = 5;
std::cout << "sc.m_n = " << sc.m_n << "\n";
}
http://ideone.com/wDl4oP
关于c++ - 有没有一种方法可以将转换运算符添加到基本类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35186919/