奇怪的问题,关于vs2005

adfas 2009-07-08 08:45:59
#include <iostream>

#include <algorithm>
using namespace std;
class point
{
double m_x;
double m_y;

};
bool cmp(const point &lhs, const point &rhs)
{
return lhs.m_x < rhs.m_x;
}

point a[100];

int main()
{
sort(a, a + 100, cmp);
return 0;
}


错误信息
1>------ 已启动生成: 项目: helloworld, 配置: Debug Win32 ------
1>正在编译...
1>test.cpp
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : error C2039: 'iterator_category' : is not a member of 'Point'
1> .\test.cpp(7) : see declaration of 'Point'
1> .\test.cpp(36) : see reference to class template instantiation 'std::iterator_traits<_Iter>' being compiled
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : error C2146: syntax error : missing ';' before identifier 'iterator_category'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : error C2602: 'std::iterator_traits<_Iter>::iterator_category' is not a member of a base class of 'std::iterator_traits<_Iter>'
1> with
1> [
1> _Iter=Point
1> ]
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : see declaration of 'std::iterator_traits<_Iter>::iterator_category'
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(572) : error C2868: 'std::iterator_traits<_Iter>::iterator_category' : illegal syntax for using-declaration; expected qualified-name
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : error C2039: 'value_type' : is not a member of 'Point'
1> .\test.cpp(7) : see declaration of 'Point'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : error C2146: syntax error : missing ';' before identifier 'value_type'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : error C2602: 'std::iterator_traits<_Iter>::value_type' is not a member of a base class of 'std::iterator_traits<_Iter>'
1> with
1> [
1> _Iter=Point
1> ]
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : see declaration of 'std::iterator_traits<_Iter>::value_type'
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(573) : error C2868: 'std::iterator_traits<_Iter>::value_type' : illegal syntax for using-declaration; expected qualified-name
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : error C2039: 'difference_type' : is not a member of 'Point'
1> .\test.cpp(7) : see declaration of 'Point'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : error C2146: syntax error : missing ';' before identifier 'difference_type'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : error C2602: 'std::iterator_traits<_Iter>::difference_type' is not a member of a base class of 'std::iterator_traits<_Iter>'
1> with
1> [
1> _Iter=Point
1> ]
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : see declaration of 'std::iterator_traits<_Iter>::difference_type'
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(574) : error C2868: 'std::iterator_traits<_Iter>::difference_type' : illegal syntax for using-declaration; expected qualified-name
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : error C2039: 'pointer' : is not a member of 'Point'
1> .\test.cpp(7) : see declaration of 'Point'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : error C2146: syntax error : missing ';' before identifier 'pointer'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : error C2602: 'std::iterator_traits<_Iter>::pointer' is not a member of a base class of 'std::iterator_traits<_Iter>'
1> with
1> [
1> _Iter=Point
1> ]
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : see declaration of 'std::iterator_traits<_Iter>::pointer'
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(576) : error C2868: 'std::iterator_traits<_Iter>::pointer' : illegal syntax for using-declaration; expected qualified-name
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : error C2039: 'reference' : is not a member of 'Point'
1> .\test.cpp(7) : see declaration of 'Point'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : error C2146: syntax error : missing ';' before identifier 'reference'
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : error C2602: 'std::iterator_traits<_Iter>::reference' is not a member of a base class of 'std::iterator_traits<_Iter>'
1> with
1> [
1> _Iter=Point
1> ]
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : see declaration of 'std::iterator_traits<_Iter>::reference'
1> with
1> [
1> _Iter=Point
1> ]
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(577) : error C2868: 'std::iterator_traits<_Iter>::reference' : illegal syntax for using-declaration; expected qualified-name
1> with
1> [
1> _Iter=Point
1> ]
1>abc.cpp
1>.\abc.cpp(13) : error C2248: 'point::m_x' : cannot access private member declared in class 'point'
1> .\abc.cpp(7) : see declaration of 'point::m_x'
1> .\abc.cpp(6) : see declaration of 'point'
1>.\abc.cpp(13) : error C2248: 'point::m_x' : cannot access private member declared in class 'point'
1> .\abc.cpp(7) : see declaration of 'point::m_x'
1> .\abc.cpp(6) : see declaration of 'point'
1>Generating Code...
1>生成日志保存在“file://d:\Backup\我的文档\Visual Studio 2005\Projects\helloworld\helloworld\Debug\BuildLog.htm”
1>helloworld - 27 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
...全文
229 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin_Perkins 2009-07-10
  • 打赏
  • 举报
回复

#include <iostream>

#include <algorithm>
using namespace std;
// C++中class默认为私有成员
class point
{
public:
double m_x;
double m_y;
};
bool cmp(const point &lhs, const point &rhs)
{
return lhs.m_x < rhs.m_x;
}

point a[100];

int main()
{
sort(a, a + 100, cmp);
return 0;
}
lwlchristy 2009-07-10
  • 打赏
  • 举报
回复
对的,注意结构体和类的区别!
ysysbaobei 2009-07-09
  • 打赏
  • 举报
回复
顶下
lingyin55 2009-07-08
  • 打赏
  • 举报
回复
选择rebuild all试下

[Quote=引用 9 楼 shellcoder 的回复:]
不知道为什么,在vs2005下就是不过。无奈
[/Quote]
Walf_ghoul 2009-07-08
  • 打赏
  • 举报
回复
code::blocks下加上public无误。。。
adfas 2009-07-08
  • 打赏
  • 举报
回复
不知道为什么,在vs2005下就是不过。无奈
blh 2009-07-08
  • 打赏
  • 举报
回复
修改成
class point
{
public:
double m_x;
double m_y;

};

后,在MinGW下无错误
rivulettornado 2009-07-08
  • 打赏
  • 举报
回复
使用gcc编译的,加上了public之后,就没有出现编译错误了。
adfas 2009-07-08
  • 打赏
  • 举报
回复
在线等。
adfas 2009-07-08
  • 打赏
  • 举报
回复
把class改成stuct,并且加上分号后,错误依旧。
jenglev 2009-07-08
  • 打赏
  • 举报
回复
上楼正解
大前置 2009-07-08
  • 打赏
  • 举报
回复
public:
double m_x;
double m_y;
因为如果没有加public修饰,系统默认为privite

而privite修改的,不能直接访问的
机智的呆呆 2009-07-08
  • 打赏
  • 举报
回复

#include <iostream>
#include <algorithm>
using namespace std;
struct point
{
double m_x;
double m_y;
};
bool cmp(const point &lhs, const point &rhs)
{
return lhs.m_x < rhs.m_x;
}
point a[100];
int main()
{
sort(a, a + 100, cmp);
return 0;
}

mengde007 2009-07-08
  • 打赏
  • 举报
回复
class point
{
public:
double m_x;
double m_y;
};

64,651

社区成员

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

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