我可以在c ++中使用多个结构作为函数的参数吗?

时间:2018-02-16 17:47:35

标签: c++ function structure

我正在用C ++类介绍OOP,我们介绍了结构。老师希望我们创建一个结构点,它将是一个点的x和y坐标,然后使用它们来做各种事情。    她想要的一个例子是“dist - 这个函数将获得两个点并计算并返回点之间的距离。” 但是,每当我尝试将点传递给函数时,我都会收到错误。

例如,如果我初始化

float dist(Point a);

定义

float dist(Point a){
return 1;
}

我没有收到错误,但如果我说

float dist(Point a, Point b);
float dist(Point a, Point b){
return 1;
}

错误会将我弹出到另一个屏幕并突出显示该行

typedef typename _Iterator::iterator_category iterator_category;

我不能以这种方式传递两个结构,或者我只是误读了她的指示?

提前致谢。

编辑:以下是请求的完整代码,但不起作用。

#include <iostream>
#include <cmath>
using namespace std;

struct Point{
    float x;
float y;
}a,b,c;

Point readPt(Point current);
void showPt(Point current);
float distance(Point first, Point second);

int main(){

int test;
cout << "Enter your first point.\n";
        a = readPt(a);
        cout << "Enter your second point.\n";
        b = readPt(b);
        showPt(a);
        showPt(b);
        test = distance(a, b);
return 0;
}


Point readPt(Point current){
char junk;
cin >> junk >> current.x >> junk >> current.y >> junk;
return current;
}

void showPt(Point current){
cout << "(" << current.x << "," << current.y << ")";
}

float distance(Point first, Point second){
return 1;
}

1 个答案:

答案 0 :(得分:3)

由于您正在使用using namespace std;,您的编译器会抱怨std::distance函数而不是float distance(Point first, Point second);函数,因为编译字符串中没有-std=c++11标志。移除using namespace std;语句,并使用std::代替root :to => 'welcome#index' get "/privacy" => 'welcome#privacy' get "/help" => 'welcome#help' resources :user_sessions

有关该主题的更多信息,请参阅此SO帖子:
name lookup