我正在尝试获取PrintInformation(Employee sEmployee)
中声明并在employ.h
中定义的函数employ.cpp
,以打印出它收到的Employee
结构变量的每个字段作为参数,但它没有出现在控制台上。程序中的每个其他cout
语句都可以正常工作,当我在main.cpp
中获得所有声明和定义时,我不记得有任何问题。我在Mac OSX 10.6.8上使用CodeBlocks,我的编译器是GNU GCC。以下是所有文件:
employ.h
#ifndef EMPLOY_H
#define EMPLOY_H
struct Employee
{
int nID;
int nAge;
float fWage;
};
void PrintInformation(Employee sEmployee);
#endif // EMPLOY_H
employ.cpp
#include <iostream>
#include "employ.h"
void PrintInformation(Employee sEmployee)
{
using namespace std;
cout << "ID: " << sEmployee.nID << endl;
cout << "Age: " << sEmployee.nAge << endl;
cout << "Wage: " << sEmployee.fWage << endl << endl;
}
的main.cpp
#include <iostream>
#include "employ.h"
int main()
{
using namespace std;
cout << "The size of Employee is " << sizeof(Employee) << endl;
Employee sJoe;
sJoe.nID = 14;
sJoe.nAge = 32;
sJoe.fWage = 24.15;
Employee sFrank;
sFrank.nID = 15;
sFrank.nAge = 28;
sFrank.fWage = 18.27;
// Frank got a promotion
sFrank.fWage += 2.50;
//Today is Joe's birthday
sJoe.nAge ++;
void PrintInformation(Employee sJoe);
void PrintInformation(Employee sFrank);
if (sJoe.fWage > sFrank.fWage)
cout << "Joe makes more than Frank" << endl;
return 0;
}
提前致谢!
我忘了指定我之前尝试使用语句PrintInformation(Employee sJoe)
调用该函数并从编译器获得此消息:
error: expected primary-expression before 'sJoe'
答案 0 :(得分:1)
你没有调用这个函数,你是在声明它。两次。
你想要
PrintInformation(sJoe);
PrintInformation(sFrank);
答案 1 :(得分:0)
void PrintInformation(Employee sJoe);
void PrintInformation(Employee sFrank);
这些是声明,而不是函数调用。可以根据需要多次声明函数。您可以在其他函数中声明函数(但不能定义它们)。参数的名称是可选的,对函数的签名没有影响,onyl类型很重要。这就是为什么你可以在每个声明中以不同的名称命名,编译器不会抱怨。只有在您通常希望实际使用参数的函数定义时才需要它。
你需要:
PrintInformation(sJoe);
PrintInformation(sFrank);