文件sys.cpp:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <fstream>
using namespace std;
[...]
struct kmph_in_mps
{
int kmph[4];
int result[4];
void kmph_erfassen()
{
for (size_t i = 0; i < 4; ++i)
{
cin >> kmph[i];
}
}
void mps_erfassen(int kmph, double result)
{
result = kmph / 3.6;
}
void ergebniss_ausgeben()
{
cout << endl << kmph << "Km/h sind " <<result << " Meter pro Sekunde\n";
}
};
[...]
文件main.cpp:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "sys.cpp"
#include <fstream>
kmph_in_mps c;
[...]
void Kmph_in_mps()
{
system("cls");
cout << "\nKm/h: ";
c.kmph_erfassen();
c.mps_erfassen(int kmph, double result);
c.ergebniss_ausgeben();
t.beenden();
}
[...]
错误:
Error: expected primary-expression before “int”
Error: expected primary-expression before “double”
我是一个学习C ++的人,我现在不知道该做什么。 我在互联网和这里寻找答案,但我真的找不到合适的答案。 在“in”和“double”之前我必须写哪个主表达式? 或者我做的一切完全错误,就像一个beinner一样? :P
编辑: 我尝试了返回结果,但似乎不允许在虚空中。
我已经试过了c.mps_erfassen();
但它也给了我一个错误:错误:没有匹配函数来调用`kmph_in_mps :: mps_erfassen()'|
我已经尝试了c.mps_erfassen(kmph, result);
但是我没有在这个范围内声明它们。它们在另一个文件(sys.cpp)中声明。 :S
答案 0 :(得分:3)
c.mps_erfassen(int kmph, double result);
//^^^remove int and double
调用函数时,不应将类型放在参数之前。
答案 1 :(得分:0)
此
c.mps_erfassen(int kmph, double result);
应该是
c.mps_erfassen(kmph, result);
让函数推导出类型:)
对评论作出回应: -
你正在main.cpp中创建struct的对象,而它的定义是在sys.cpp中。 main.cpp如何知道你的结构意味着什么。
为了更好的设计,在头文件中将struct声明放在sys.h中,然后在.cpp文件中定义所需的成员,说sys.cpp(你必须包含sys.h)。然后在main.cpp中使用该结构(同样,你必须在这里包含sys.h)。