C++ 模板;操作员(int)
关于我在这里已经提到的点结构:C++ 模板;操作员(int),c++,templates,operator-overloading,casting,C++,Templates,Operator Overloading,Casting,关于我在这里已经提到的点结构: 是否有可能将函数toint()替换为强制转换运算符(int) 名称空间点{ 模板 结构点{ tx[dims]; //嗯??? 模板 点运算符U()常量{ 点ret; 标准::副本(X,X+dims,ret.X); 返回ret; } //嗯??? 点运算符int()常量{ 点ret; 标准::副本(X,X+dims,ret.X); 返回ret; } //嗯 点toint(){ 点ret; 标准::副本(X,X+dims,ret.X); 返回ret; } };//结
是否有可能将函数toint()替换为强制转换运算符(int)
名称空间点{
模板
结构点{
tx[dims];
//嗯???
模板
点运算符U()常量{
点ret;
标准::副本(X,X+dims,ret.X);
返回ret;
}
//嗯???
点运算符int()常量{
点ret;
标准::副本(X,X+dims,ret.X);
返回ret;
}
//嗯
点toint(){
点ret;
标准::副本(X,X+dims,ret.X);
返回ret;
}
};//结构点
模板
点<2,T>创建(T X0,T X1){
点<2,T>ret;
ret.X[0]=X0;ret.X[1]=X1;
返回ret;
}
}; //名称空间点
内部主(空){
使用名称空间点;
点<2,双>p2d=Point::Create(12.3,34.5);
点<2,int>p2i=(int)p2d;//ähhm???
std::coutc;
返回0;
}
我认为问题在于C++无法区分不同的返回类型吗?非常感谢。
问候Oops正确的语法是
operator int() const {
...
当您重载cast操作符时,不需要额外的返回类型
当你说(int)x
时,编译器实际上希望得到int
,而不是点。可能您需要一个构造函数
template <typename U>
Point(const Point<dims, U>& other) { ... }
模板
点(常数点和其他){…}
正确的语法是
operator int() const {
...
当您重载cast操作符时,不需要额外的返回类型
当你说(int)x
时,编译器实际上希望得到int
,而不是点。可能您需要一个构造函数
template <typename U>
Point(const Point<dims, U>& other) { ... }
模板
点(常数点和其他){…}
您的语法错误。是否要强制转换为int?是否要强制转换到其他类型点?语法错误。是否要强制转换为int?你想转换到不同的类型点吗?是的!谢谢,这可能是最好的解决方案。不需要其他答案。其他正确语法:运算符点()
;)但是使用构造函数进行转换是一个更好的主意。是的!谢谢,这可能是最好的解决方案。不需要其他答案。其他正确语法:运算符点()
;)但是使用构造函数进行转换是一个更好的主意。