创建自己的头文件时出现错误 [已关闭]

I get an error when I create my own header file [closed]

提问人:muratkavak 提问时间:12/2/2022 最后编辑:Remy Lebeaumuratkavak 更新时间:12/2/2022 访问量:90

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

12个月前关闭。

我将在下面的同一文件夹下编写头文件和我创建的两个文件的代码。我在 Visual Studio、gcc-gnu 和 dev c++ 下尝试了这个。我在文件中收到以下错误:.cppemploye.cpp

“.” 令牌之前的预期初始值设定项

employee.h:

#ifndef employee
#define employee
#include <iostream>
using namespace std;
class employe{
public:
        string name;
        int id;
        int salary;
        void showInfos();
};
#endif 

employe.cpp:

#include "employee.h"
#include <iostream>
using namespace std;

void employe.showInfos(){
    cout<<"Ad:"<<employe.name<<endl<<"Id:"<<employee.id<<endl<<"Salary:"<<employee.salary;
}

main.cpp:

#include <iostream>
#include "employee.h"
#include <iostream>

int main(){
    
    employe.id=21;
    cout<<employe.id;
    
    return 0;
}

main.cpp错误:

expected unqualified-id before '.' token
expected primary-expression before '.' token

我的意思是创建我自己的头文件并使用它。但这发生了。

C++ 标头

评论

1赞 NathanOliver 12/2/2022
投票关闭为错别字。您需要 ,而不是在定义函数时。::.void employe.showInfos(){ -> void employe::showInfos(){
0赞 muratkavak 12/2/2022
现在它给出了这个错误:'.' token 之前的预期 primary-expression
0赞 Adrian Mole 12/2/2022
...然后,在成员函数定义,只需使用 和 others。不需要 .nameemployee.
1赞 Remy Lebeau 12/2/2022
附带说明:永远不要在头文件中使用 using namespace std;(或者,如果你能帮忙的话)。
1赞 HolyBlackCat 12/2/2022
宏应全部大写。

答:

1赞 Remy Lebeau 12/2/2022 #1

employe.cpp失败是因为您错误地限定了所有内容。它需要看起来更像这样:

#include "employee.h"
#include <iostream>
using namespace std;

void employe::showInfos(){
    cout << "Ad:" << name << endl << "Id:" << id << endl << "Salary:" << salary;
}

main.cpp失败是因为您的结构成员都不是,因此您无法像尝试的那样在结构类型本身上访问它们中的任何一个。您需要声明一个对象实例,例如:staticemploye

#include "employee.h"

int main(){
    
    employe emp;

    emp.name = "Joe";
    emp.id = 21;
    emp.salary = 12345;
    emp.showInfos();
    
    return 0;
}

在线演示

评论

0赞 muratkavak 12/2/2022
它帮了大忙,谢谢,但现在它给出了这个错误:对“WinMain”的未定义引用,并且 ıd 返回了 1 个退出状态
0赞 Remy Lebeau 12/2/2022
@muratkavak对我来说效果很好:onlinegdb.com/REo4yCe3f 对于该特定错误,StackOverflow 上还有很多其他问题。这意味着您的项目配置不正确,因此您需要修复它。这与显示的代码无关。
0赞 muratkavak 12/2/2022
ım 使用 DevC++ 作为编译器。这可能是问题所在吗?作为编译器,您有什么建议?
0赞 463035818_is_not_an_ai 12/2/2022
@muratkavak 从新工具链开始的方法是编写一个“HelloWorld”,以确保您可以编译一些东西。
0赞 Remy Lebeau 12/2/2022
编译器不是问题所在。链接器是。它找不到项目的预期入口点的代码。这是因为该项目配置为Windows GUI项目(入口点),但显示的代码是为控制台项目(入口点)编写的。WinMain()main()