gpt4 book ai didi

c++ - 头文件中的类声明

转载 作者:行者123 更新时间:2023-11-27 22:53:37 25 4
gpt4 key购买 nike

我已经使用 C++ 几个月了,但在使用头文件和源代码文件时遇到错误。我创建一个源代码文件包含类枪(示例不是实际程序):

class gun
{
private:
int stuff;
public:
void doStuff();
};


void Gun::doStuff()
{
cout << stuff << endl;
}

然后我创建了一个头文件并声明了这样的类:

class gun;

然后在我的主源文件中我这样做:

int main()
{
gun *mygun = new gun;
mygun->doStuff();
return 0;
}

然而,当我尝试执行它时,我得到了错误:不完整类型“类枪”的无效使用,我认为问题是我如何在 header 中声明它,我做错了吗?我是怎么做到的?谢谢。

感谢所有帮助过的人!我现在明白了,我以为只有前向声明 进入头文件,感谢您的所有回答!

最佳答案

您似乎打算以错误的方式分离实现和头文件。前向声明不应该放在头文件中。整个声明应该!这就是您的代码的结构

枪.hpp

#pragma once

class Gun
{
private:
int stuff;
public:
void doStuff();
};

枪.cpp

#include "Gun.hpp"
#include <iostream>
using std::cout;
using std::endl;

void Gun::doStuff()
{
cout << stuff << endl;
}

main.cpp

int main()
{
Gun *mygun = new Gun;
mygun->doStuff();

delete mygun; // <-- remember this!
return 0;
}

头文件和实现的分离在C++和其他语言中是至关重要的!您应该只在 header 中声明类及其完整接口(interface)(如上),并在 .cpp 文件中包含所有实现细节(如上:)

关于c++ - 头文件中的类声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35237608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com