请问下比较类成员的位置

chp845 2014-02-23 11:02:29
class Point3d{
public:
float x;
public:
float y;
private:
float z;
};

template <class class_type, class data_type1, class data_type2>
char* access_order(data_type1 class_type::*mem1, data_type2 class_type::*mem2)
{
return mem1 > mem2 ? "True" : "False";
}


int main(int argc, const char *argv[])
{
access_order(&Point3d::x, &Point3d::y);
return 0;
}


access_order(&Point3d::x, &Point3d::y); 这句话报错,我看c++对象模型里面是这么写!请问应该怎么改写呀?
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pump天天学习 2014-02-23
  • 打赏
  • 举报
回复
好像书上是有这么个玩意,不过没用过 我觉得理解就好,没必要非要这么纠结
turing-complete 2014-02-23
  • 打赏
  • 举报
回复
可以比较吗? 没见识过
欧阳春晖 2014-02-23
  • 打赏
  • 举报
回复
引用 楼主 chp845 的回复:
class Point3d{
public:
    float x;
public:
    float y;
private:
    float z;
};

template <class class_type, class data_type1, class data_type2>
char* access_order(data_type1 class_type::*mem1, data_type2 class_type::*mem2)
{
    return mem1 > mem2 ? "True" : "False";
}


int main(int argc, const char *argv[])
{
    access_order(&Point3d::x, &Point3d::y);
    return 0;
}
access_order(&Point3d::x, &Point3d::y); 这句话报错,我看c++对象模型里面是这么写!请问应该怎么改写呀?
你这个出错的原因是因为你有3个模板参数,但是你只实例化2个,还有一个模板参数没有能够依靠自动类型推到进行确定,所以编译器报错
vanxining 2014-02-23
  • 打赏
  • 举报
回复
貌似SO那个问题是个中国人提的。那些中式(英语)表达太熟悉了。 建议发帖前多多检查一下,免得让native speakers笑话。 P.S. 我曾经将moderner写成more modern,从此不再敢在英文论坛发帖...

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧