2014-10-29 2680 views
-3

當我嘗試編譯此代碼我得到這些錯誤:C++錯誤C2061:語法錯誤:標識符

Error 1 error C2061: syntax error : identifier 'stammdaten' 
Error 2 error C2660: 'Test_Lohnab::Gehaltsrechner' : function does not take 1 arguments 
Error 3 error C2511: 'int Test_Lohnab::Gehaltsrechner(stammdaten &)' : overloaded member function not found in 'Test_Lohnab'  

這將是一個很大的幫助,如果有人能解釋我我做錯了什麼。

這是我的代碼:

//Test_Lohnab.h 

#pragma once 

#include <iostream> 

#include <string> 



class Test_Lohnab 

{ 

public: 

    Test_Lohnab(); 

    ~Test_Lohnab(); 

    int Gehaltsrechner(stammdaten &st);//, abrechnung &ab); 
} 


class stammdaten 
{ 
public: 
    std::string name; 
    std::string strasse; 
    std::string ort; 
    …. 

    public: 
     stammdaten(); 
     ~stammdaten(); 

     stammdaten(std::string n, std::string s, std::string o, int st, int fa, int k, int a,  double z, double kver, double pk, int mi, int pv, int os, int ps, int ki, double geb, 
      double jf, double jh, int G_c, int G_a_c, int r_c, int A_L_c, double U_1, double U_2,  double bb_g); 
} 
//Test_Lohnab.cpp 

#include "Test_Lohnab.h" 

#include <iostream> 



Test_Lohnab::Test_Lohnab() 
{ 
} 



Test_Lohnab::~Test_Lohnab() 
{ 
} 



stammdaten::stammdaten() 
{ 
} 

stammdaten::stammdaten(std::string n, std::string s, std::string o, int st, int fa, int k, int a, double z, double kver, double pk, int mi, int pv, int os, int ps, int ki, double geb, 
double jf, double jh, int G_c, int G_a_c, int r_c, int A_L_c, double U_1, double U_2, double bb_g) 
: name(n), strasse(s), ort(o), stkl(st), f(fa), krv(k), abv(a), zkf(z), kv(kver), pkpv(pk), mitag(mi), pvz(pv), ost(os), pvs(ps), kist(ki), gebjahr(geb), jfreib(jf), jhinzu(jh), 
Gleitzone_check(G_c), Gleitzone_alt_check(G_a_c), rente_check(r_c), AN_Lst_check(A_L_c), U1(U_1), U2(U_2), bbg(bb_g) 
{ 
} 

int main() 
{ 
    system("PAUSE"); 

    stammdaten Personstamm1{ "Klaus Müller", "Parkstrasse 12", "78578 Monopoly", 1, 1000, 1, 1, 0, 15.5, 0.0, 0, 1, 0, 0, 9, 1982, 0, 0, 0, 0, 0, 0, 1.7, 0.38, 0 }; 

    /**/ 
    Test_Lohnab Ablauf; 
    Ablauf.Gehaltsrechner(Personstamm1);   //, Abrechnung1); 
    system("PAUSE"); 
    /**/ 
} 

int Test_Lohnab::Gehaltsrechner(stammdaten &Test1)//, abrechnung &Abrech1) 
{ 
} 
+2

這兩個類在關閉後都缺少分號。另外:這些錯誤發生在哪一行? – niklasfi 2014-10-29 13:58:56

+0

錯誤1在int Gehaltsrechner(stammdaten&st,abrechnung &ab);這是我的錯,實際上有分號,我只是試圖減少代碼,所以最好看。 – Mikehen 2014-10-29 14:02:20

+0

爲什麼你在stammdaten構造函數中複製兩次字符串? – 2014-10-29 14:02:21

回答

2

你的類Test_Lohnab功能int Gehaltsrechner需要的類型stammdaten,編譯器還不知道,因爲它是事後定義的對象。您可以使用前向聲明來通知他。 includes

class stammdaten; 
+1

,或者由於'stammdaten'似乎不依賴於'Test_Lohnab',他可以先定義'stammdaten',然後定義'Test_Lohnab'。 – niklasfi 2014-10-29 14:05:10

+0

哦,是的,這可以解決問題。謝謝你,先生。生活可能如此輕鬆。 – Mikehen 2014-10-29 14:20:51

+0

謝謝你的回答。它爲我解決了同樣的問題。 – 2017-03-10 14:34:40