c++程序出错了,哪位大神帮帮我

#include<iostream>
#include<math.h>
using namespace std;
class point
{
private:
int x;
int y;
public:
point(int a,int b)
{
x=a;
y=b;
}
friend double distance (point p1,point p2);
};
double distance(point p1,point p2)
{
double d;
d=pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2);
return sqrt(d);
}
int main()
{
point p1(3,4),p2(0,0);
cout<<"两点之间的距离为:"<<distance(p1,p2)<<endl;
return 0;
}
错误
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h||In instantiation of 'struct std::iterator_traits<point>':|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_funcs.h|114| required by substitution of 'template<class _InputIterator> typename std::iterator_traits::difference_type std::distance(_InputIterator, _InputIterator) [with _InputIterator = point]'|
F:\c语言练习\zuoye\main.cpp|26|required from here|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h|166|error: no type named 'iterator_category' in 'class point'|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h|167|error: no type named 'value_type' in 'class point'|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h|168|error: no type named 'difference_type' in 'class point'|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h|169|error: no type named 'pointer' in 'class point'|
f:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator_base_types.h|170|error: no type named 'reference' in 'class point'|
||=== 生成完成: 6 错误, 2 警告 (0 分, 2 秒) ===|

注意看出错信息


In instantiation of 'struct std::iterator_traits<point>':|

说明在提到的头文件stl_iterator_base_types.h当中还有一个也叫point的类

把你的类改个名字吧

比如改成Point

那么就是

#include<iostream>
#include<math.h>
using namespace std;
class Point
{
private:
    int x;
    int y;
public:
    Point(int a,int b)
    {
        x=a;
        y=b;
    }
    friend double distance (Pointp1,Pointp2);
};
double distance(Pointp1,Point p2)
{
    double d;
    d=pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2);
    return sqrt(d);
}
int main()
{
    Point p1(3,4),p2(0,0);
    cout<<"两点之间的距离为:"<<distance(p1,p2)<<endl;
    return 0;
}

试试吧 其他的没什么问题 函数同名没关系 参数不同就可以 

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-27
凭经验感觉你的提供的代码没问题,但是你可能在其它地方把point作为了模板形参或者系统内存在point的类型。建议你先把自己的point命名为point_tmp_2014_10_27 再编译试试看还报什么错误。
第2个回答  2014-10-27
distance函数重新命名 这个函数和std::distance()重名 把你的distance重新写个名字
第3个回答  2014-10-26
源码呢?
第4个回答  2014-10-26
我发现using namespace std跟.h效果重复,把.h去掉

运行一段程序C++ 显示有错误 那位大神能帮我解释下这是什么意思啊 (这 ...
打不开库文件comct132.lib,在工程 设置 目录下 有个c++LINK,加上comct132.lib。编译,还是LINK : fatal error LNK1104: cannot open file "comct132.lib"的话,说明你没有文件comct132.lib。搜索一下你的磁盘有没有comct132.lib,没有的话下载一个或从别人那里拷贝一个,放到Visual Studio ->...

c++程序出错了,哪位大神帮帮我
比如改成Point 那么就是 include<iostream>#include<math.h>using namespace std;class Point{private: int x; int y;public: Point(int a,int b) { x=a; y=b; } friend double distance (Pointp1,Pointp2);};double distance(Pointp1,Point p2){ double d; ...

C++运行出错,求大神帮我看看,无法读取内存是什么意思?要怎么解决啊...
数组越界了。你当前的 l 是-858993460。stu[l] 也就是stu[-858993460];因为数组的下标最小是0,你的这个已经不知道取到的是什么内存了, 所以你这里就会奔溃 在取stu数组的值的时候,最好判断下数组下标的范围。如: if( l >=0 && l < 数组的大小 )

我的电脑一开机就出C++错误
一、你的某个程序是否被你删除了,出现残缺。二、某种恶意插件,是某个病毒,可能也是被你自身电脑上的杀毒软件,自行删除后 没清楚干净的;三、你的某个程序安装错误,建议:一、彻底杀毒 换个杀毒软件 二、重做系统 c盘就可

你好,我拜读了你一个c++程序,但是调试出错,能帮忙么?谢啦
建项目的时候项目类型选错了,应该选择Win32 Console Application,而不是Win32 Application。建好的工程,也可以直接修改工程类型 菜单:Project->Setting->Link 选项卡,在下面的Project Options框里,把\/subsystem:windows 改为\/subsystem:console ,如图:...

C++ 高手帮帮忙啊 这程序咋也无法运行!!!
第二,假设只输入#,那么r->data == '#' r=r->next; r->next又是无定义的。它指哪里都不知道。。这个里面你的循环结束了,你有一个输出,cout<<r->data<<r->next->data<<endl;就非常有问题了。。r 它都等于一个未定义的东东,它都指向一个未知的内存~~~自己改吧。不帮你改了。

请帮我看看这个c++程序是什么错误 应该怎样改
首先,表示,窗口程序编写没有问题。我想,你的问题是,编译环境设置问题。如果是VC++6.0下,找到属性选项,选择设置 菜单项。进入 链接选项卡 在最下面的一个文本框中,找到console修改成windows就可以编译运行了。

c++编程中遇到的问题,请各位电脑高手帮忙解决
1. 打开一个命令行窗口: 开始->运行, 输入"cmd", 回车 2. 在命令行窗口中输入: msdev \/useenv 回车就好了 ps. msdev就是msdev.exe,就是VC IDE程序, 所以你输入msdev.exe \/useenv也可以.就是表示启动这个程序,并加了一个命令行选项.具体程序在这里:C:\\Program Files\\Microsoft Visual Studio\\...

C语言程序运行出错~求帮助~
这在C++(VC 和 VS)环境下出现的错误,请保存现有代码,然后关闭空间,而后再打开已保存的代码,重新编译运行即可。原因是,在C++中,允许多文件模式,新添加的代码总是默认与以前(现有的)代码是同一个程序所属的,你可能已经注意到,代码名称已经从cpp1.cpp,改变为cpp2.cpp了。

求高手帮忙挑下c++程序错误,程序如下 error C2593: 'operator >>。顺便...
你再试试 ===>在重载operrator<<和>>前加上std::或者#ingclude<iostream> using namespace std::改为#ingclude<iostream.h>

相似回答
大家正在搜