main.cpp | 45 | error:在" int"之前预期的primary-expression;和"双"

时间:2014-11-05 19:28:05

标签: c++ c compiler-errors

文件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

2 个答案:

答案 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)。