精华内容
下载资源
问答
  • QT之类的创建——一个.h对应多个.cpp的问题
    2019-07-04 16:56:00

    环境说明:

                QT版本5.12.0,QT Creater版本4.8.0X64,WIN10 64位,编译、调试器VS2015 amd64

    创建一个类的时候,可能包含很多成员变量及成员函数,每个成员函数代码量可能非常大,这样就希望将成员函数 的实现放到独立的新的.cpp文件,形成一个.h文件类声明,多个.cpp文件类成员函数实现。实现方法如下:

    //A.h
    class A
    {
    public:
        A();
        ~A();
    
    public:
        int a,b,c;
    
    public:
        //成员函数1
        void fun1();
        //成员函数2
        void fun1();
        //成员函数3
        void fun1();
            
          ...
    };
    
    //1.cpp
    #include "A.h"
    void A::func1()
    {
        //do somting
    }
    
    //2.cpp
    #include "A.h"
    void A::func2()
    {
        //do somting
    }
    
    //3.cpp
    #include "A.h"
    void A::func3()
    {
        //do somting
    }

    注意,经过试验验证(好吧,其实是把我折磨了几个小时,一点点排除发现的,网上也没见相关说明),分离出来的.cpp文件不要超过5个。

    如果超过5个,就会报链接错误,无法构建。爆出的错误如下:

                              cl.exe中的内部编译器错误

                              cl: 命令行 error D8000

    个人理解应该是和编译器有关,有兴趣的可以查查。

    更多相关内容
  • 如果你不想让你的源代码变得很难阅读的话, 就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上 就可以分别放在一个单元,也就是cpp里面) 那么就是一个.cpp对应一个.obj,然后将所有的obj链接起来...
  • 然后在其中一.cpp文件中定义全局变量;最后就可以在其它.cpp文件中使用全局变量。 验证步骤 1.新建global.h文件 #include <cstring> #include <iostream> using namespace std; extern string tmp...

    总体思路

    首先使用extern关键字在.h文件中申明全局变量;然后在其中一个.cpp文件中定义全局变量;最后就可以在其它.cpp文件中使用全局变量。

    验证步骤

    1.新建global.h文件

    #include <cstring>
    #include <iostream>
    using namespace std;
    extern string tmp1;//声明全局变量tmp1 
    extern string tmp2;

    2.新建1.cpp文件

    #include "global.h"
    string tmp1;//定义全局变量tmp1 
    string tmp2;
    void getValue(){
    	cout<<"1.cpp获取的全局变量值:tmp1="<< tmp1<<"  ,tmp2="<<tmp2<<endl;
    }

    3.新建2.cpp文件

    #include "global.h"
    void setValue(){
    	cout<<"在2.cpp中输入tmp1和tmp2的值:"<<endl; 
    	cout<<"tmp1:"; 
    	cin>>tmp1;
    	cout<<"tmp2:";
    	cin>>tmp2;
    }
    

    4.新建main.cpp文件

    #include "1.cpp"
    #include "2.cpp" 
    int main(){
    	setValue();//在2.cpp中对全局变量赋值 
    	getValue();//在1.cpp中打印全局变量的值 
    	return 0;
    }

    5.结果截图

    展开全文
  • C++编译头文件和多个cpp

    千次阅读 2019-06-27 00:39:10
    头文件(shape.h): classCircle{public:doublecalculate_perimeter(doubleradius);doublecalculate_area(doubleradius);private:intradius;}; ...shape.cpp: #include"shape.h"#definePI...

    头文件(shape.h):

    class Circle
    {
    public:
         double calculate_perimeter( double radius);
         double calculate_area( double radius);
    private:
         int radius;
    };

     

    shape.cpp:

    #include  " shape.h "

    #define PI 3.14159

    double Circle::calculate_perimeter( double radius)
    {
         return  2 * PI * radius;
    }

    double Circle::calculate_area( double radius)
    {
         return PI * radius * radius;
    }

     

    主程序

    test.cpp

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

    using  namespace std;

    int main()
    {
         int radius;
        
        cout<<  " Please input radius of the circle: ";
        cin>>radius;
        Circle c;
        cout <<  " Circle Perimeter:  " << c.calculate_perimeter(radius) <<endl;
        cout <<  " Circle Area:  " << c.calculate_area(radius) <<endl;
         return  0;
    }

     

    ubuntu下编译命令:

    g++ -o test.exe shape.cpp test.cpp

     

    运行结果:

    Please input radius of the circle:5
    Circle Perimeter: 31.4159
    Circle Area: 78.5397

     

    如果我门把头文件放在某个draw目录下

    在主程序include的路径需要修改一下

    #include "draw/shape.h"

     

    编译指令:

    g++ -o test.exe draw/*.cpp test.cpp

     

     

     


     

     

    转载于:https://www.cnblogs.com/davidgu/archive/2012/06/28/2567337.html

    展开全文
  • vscode运行多个.cpp、.h的方法(只有一个...接下来,我们开始配置两大文件,他们就是.vscode文件夹下的tasks.json、launch.json,这两个文件是调试的基础,同时也是我们编译多个cpp的基础。 下面是我目前(2020/7/26

    vscode运行多个.cpp、.h的方法(只有一个main)

    首先最重要的是找到g++.exe,gdb.exe, gcc.exe,在MinGW中就有,。(每个人有每个人的存储位置,下面是我的)
    g++、gcc、gdb

    我们找到之后就可以得到他们的路径了,也就是上面那一行,这一行在后面将会用到,若是你没有MinGW,建议去下载一个。

    接下来,我们开始配置两大文件,他们就是.vscode文件夹下的tasks.json、launch.json,这两个文件是调试的基础,同时也是我们编译多个cpp的基础。

    下面是我目前(2020/7/26)使用的两大文件,都是我特意选出来的,仅供参考!

    tasks.json

    {
        "tasks": [
            {
                "type": "shell",
                "label": "g++.exe build active file",   //与launch.json的preLaunchTask一致
                "command": "C:\\MinGW\\MinGW\\mingw\\mingw64\\bin\\g++.exe",    //g++.exe的路径
                "args": [
                    "-g",
                    "${workspaceFolder}\\**.cpp",   //${workspaceFolder}表示.vscode所在的那个文件夹的路径
                    "-o",
                    "${workspaceFolder}\\${fileBasenameNoExtension}.exe" ,   //与launch的program对应
                    "-std=c++17"
                ],
                "options": {
                    "cwd": "${workspaceFolder}"
                },
                "problemMatcher": {
                    "owner": "cpp",
                    "fileLocation":[
                        "relative", "${workspaceFolder}"
                    ],
                    "pattern":{
                        "regexp": "%(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                        "file": 1,
                        "line": 2,
                        "column": 3,
                        "severity": 4,
                        "message": 5
                    }
                },
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ],
        "version": "2.0.0"
    }
    

    launch.json

    {
    
        "version": "0.2.0",
        "configurations": [
            {
                "name": "C/C++",    //可以自己定义,会在侧边栏显示
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",    //${fileBasenameNoExtension}表示当前打开的文件名不包括后缀
                "args": [ "-std=c++20" ],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,    //false:表示调试时不弹出控制台窗口(类似dev、code blocks那种黑框);true:弹出
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\MinGW\\MinGW\\mingw\\mingw64\\bin\\gdb.exe",     //gdb.exe路径,windows要加.exe
                "setupCommands": [
                    {
                        "description": "为 gdb 启用整齐打印",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "g++.exe build active file" //调用tasks.json,与其中的label一致
            }
        ]
    }
    

    我们可以看到,其中用到g++.exe,gdb.exe的路径,没有看到gcc是因为我这个学期主要学习c++,原则上,若是c的就需要用gcc,是c++的就需要g++,就是把他们两调换就行

    做完上面两个文件之后,我们去运行一个项目,下面是我这个学期的课设,全部大概一千七百多行的代码,所以用来检验再合适不过了。
    在这里插入图片描述
    全部的文件就这些,main位于hospital.cpp中,其他的就是一些.h文件的函数了,注意这些.cpp中,只能由一个main,若不然,我也不知道怎么运行,请另请高就~

    下面是主函数所在文件的代码

    #include "drug.h"
    #include "patient.h"
    #include "user.h"
    #include <cmath>
    #include <cstring>
    #include <fstream>
    #include <iomanip>
    #include <iostream>
    #include <string>
    #include <time.h>
    
    using namespace std;
    
    int door = 1, m = 0;
    
    int main() {
        patient p[100];
        drug p1[100];
        user people;
        void Home(patient *, drug *);
        int nu = 0, i, i2 = 0;
    
        fstream myfile1("d:\\drug.dat", ios::in);
        if (!myfile1) {
            cout << "不存在drug.dat文件" << endl;
            ofstream fout1("d:\\drug.dat");
            if (fout1) {
                //创建成功
                cout << "自动创建成功" << endl;
                fout1.close();
            }
        }
        myfile1.close();
        ifstream myf1("d:\\drug.dat", ios::in);
        myf1 >> p1;
        while (door == 1) {
            m = 0;
            cout << "\\\\\\\\\\  1管理员登录    2游客登录   3退出  //\n";
            cin >> i;
            if (i == 1) {
                i2 = menurl();
                if (i2 == 1) {
                    fstream myfile("d:\\patient.dat", ios::in);
                    if (!myfile) {
                        cout << "不存在patient.dat文件" << endl;
    
                        ofstream fout("d:\\patient.dat");
                        if (fout) {
                            //创建成功
                            cout << "自动创建成功" << endl;
                            fout.close();
                        }
                    }
                    myfile.close();
                    ifstream myf("d:\\patient.dat", ios::in);
                    myf >> p;
    
                    while (m == 0) {
                        Home(p, p1);
                    }
                    ofstream my("d:\\patient.dat");
                    my << p;
                    my.close();
                    ofstream my1("d:\\drug.dat");
                    my1 << p1;
                    my1.close();
                } else if (i2 == 0) {
                    door = 1;
                }
            } else if (i == 2) {
    
                nu = drugnumnull(p1) - 1;
                cout << "登录成功\n";
                cout << "只能查看药品信息\n\n";
                for (int q = 0; q <= nu; q++) {
                    cout << "\n";
                    p1[q].cdrugnum().cname().csellingprice().cquantityin().cproducedTime();
                    p1[q].ceTime();
                }
                cout << "\n查询完毕!\n\n";
            } else if (i == 3) {
                door = 0;
            } else {
                cout << "错误\n";
                door = 1;
            }
        }
        return 0;
    }
    
    void Home(patient p[], drug p1[]) {
        int i = 0;
        cout << "1 病号管理     2 药品管理      3 结束\n";
            cin >> i;
        switch (i) {
            case 1:
                patientm(p);
                break;
            case 2:
                drugm(p1);
                break;
            case 3:
                m = 1;
                break;
            default:
                cout << "错误\n";
                Home(p, p1);
                break;
        }
    }
    
    

    ok一切准备就绪,简简单单,直接调试运行
    在这里插入图片描述
    ok,运行成功,可以看到,我使用了hospital的功能和patient、user的功能,,,当然我没给出patient和user的代码,脑补一下就行

    验证完毕

    展开全文
  • 本文解决Description Resource Path Location Type multiple definition of `deal_word(std::string)' Myfunc.h /Vector_Test/src/Headers line 30 C/C++ Problem
  • ROS添加CPPh文件

    千次阅读 2020-10-18 09:00:12
    ROS添加CPPh文件 indclude文件夹添加test.h #ifndef HELLO_ROS_PKG_TEST_H #define HELLO_ROS_PKG_TEST_H #include <ros/ros.h> class test { public: test(); void show() const; }; #endif //...
  • 文章目录一、了解gcc下生成,o和...gcc编译的四步骤,预处理->编译->汇编->链接成可执行文件 汇编就是生成.o文件,gcc下命令为 gcc -c test.s -o test.o #.s为编译出来的文件 gcc test.o -o test 或者直...
  • jni中多个cpp类的使用

    2019-07-15 15:19:35
    主要完成的功能是使用生成jni对应的Test.h,新建Test.cpp写入内容,再去生成libTest.so,然后在Java类中加载
  • 当Copy别人的MFC对话框的时候,直接添加别人的.cpp .h文件,有时需要改的东西太了,所以需要我们自己生成对应的.cpp .h文件,具体操作如下: 1.右键对话框——>添加类,我选了CDialog 其中基类中CDialogEx...
  • 如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上就可以分别放在一个单元,也就是cpp里面)那么就是一个.cpp对应一个.obj,然后将所有的obj链接起来(通过...
  • 有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!! ◊make是什么?  make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会...
  • 如何将Arduino的ino文件分解成多个.h和.cpp工程文件

    万次阅读 多人点赞 2019-01-07 17:35:11
    如何将Arduino的ino文件分解成多个.h和.cpp工程文件 当用Arduino做复杂工程项目时,程序难免会变得很大。这时候要修改个别参数或函数的时候会变得麻烦...不是所有的代码都方便分解成多个cpp文件进行管理的,特别是编...
  • C++中的.h,cpp以及.hpp文件

    千次阅读 2021-04-06 16:52:43
    每日一问15:C++中的.h,cpp以及.hpp文件 1. 编译器角度的头文件(.h)和源文件(.cpp) 先从编译器角度,来看一下头文件(.h)和源文件(.cpp): ​ 对于头文件(.h),在预处理阶段,头文件被包含到源文件后,它的使命就基本...
  • C++——如何理解.h文件和.cpp文件

    千次阅读 2019-01-15 10:49:11
    建立一以类为名字的XX.h文件,声明类,再建立一相同名字的XX.cpp文件(要#include “XX.h”),实现类中的函数, 在有main 函数的.cpp里声明函数,建一与函数名一样的.cpp文件,实现该函数;并且要 #include ...
  • .h文件和.cpp文件组织结构

    千次阅读 2014-12-02 17:46:47
    .h文件一般包含在.cpp文件中,.h文件中多为变量和类的声明,而.cpp文件才是变量和类中函数的真正定义。 #include      哈,这文件既不是 .c 也不是 .h ,那我们能不能不用它,改用 iostream.h ?一般 来说只是...
  • c++ 中.h 和.cpp

    千次阅读 2019-02-20 16:42:54
    头文件(.h):  写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。  在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):   #...
  • 1.一个信号对应多个槽时,槽函数的执行顺序是怎样的??? 2.多个信号对应一个槽时,如何在槽函数中判断信号的发出者是谁(来自哪个类的对象)? 下面对这两种情况分别进行验证: 实例演示1:对一个信号对应多个槽时...
  • .h和.cpp文件的区别

    千次阅读 多人点赞 2019-06-22 03:35:50
    关于头文件和源文件的...也可以有多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话, 就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上 就可以分别放在一个单元,也就是cpp里面) ...
  • C++中.h和.cpp的关系

    千次阅读 2014-07-29 09:24:09
     一.cpp对应.obj,然后将所有的.obj链接起来(通过一叫链接器的程序),组成一.exe,即程序。 如果一.cpp要用到另一.cpp定义的函数怎么办,只需在这.cpp中写上它的函数声明。  链接器将所有的obj...
  • // one *.h file can correspond two or more *.cpp files // or a class definition can distribute in more than one *.cpp files// part.h #ifndef PART_H #define PART_H#include <iostream>class A { public:
  • CMakeList配置之编译多个.cpp文件

    千次阅读 2017-03-15 11:41:32
    不说废话了,android studio2.2 以后的ndk编译引入的cmake,官方创建新的项目会有项目事例,看了一下了一Cmakelist.txt文件,大概了解了一下,自己新创建了.cpp文件,直接编译,果然出错了03-14 23:07:01.886 ...
  • 1、出现的问题:”error LNK1169: 找到一个或多个多重定义的符号“的错误 ...有多个cpp文件和与之对应h文件,在main中调用这些文件时候需要包含进去,cpp文件中有包含h文件,main函数中也有h文件,当h文件中有定
  • Qt 多个控件 对应一个槽函数

    千次阅读 2019-08-01 11:06:15
    假设你有多个控件,需要对他们进行相似的操作,你应该如何实现呢 如图所示,你有4个按钮,首先你需要使用一个容器,把所有的按钮编号,然后使用信号与槽将按钮和其点击事件函数相对应,最后通过按钮的名称来判断到底...
  • 正好今天要使用automake来生成makefile,在此做记录。 目前在同一文件夹下有如下几c++文件 下面一步一步的生成makefile文件 首先执行 :ubuntu@VM-145-227-ubuntu:~/work/bbb/EcMasterDemoSyncSm$ ...
  • c++的.h和.cpp文件

    千次阅读 2019-05-15 19:54:35
    .h文件是不对外隐藏的, .cpp文件在编译后对外....h文件就像是一接口,具体的实现可以在.cpp中也可以在.h中。.cpp中的函数或变量即便是全局的,在没有其他.cpp文件使用的情况下,也可以不写在.h中。 下面参考:h...
  • 这样才能保证头文件被多个其他文件引用(include)时,内部的数据不会被多次定义而造成错误 inline限定符 在头文件中,可以对函数用inline限定符来告知编译器,这段函数非常的简单,可以直接嵌入到调用定义之处...
  • c语言中.h文件和.cpp文件解析

    千次阅读 2019-10-05 21:48:23
    理论上来说cpp文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体实现,任何一个cpp文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以cpp文件为单位的,...
  • 关子: 之前一直使用matlab做算法设计与数据分析,但是matlab的工程化不够以及非开源,软件需要付费。 最近使用OpenCV来搞图像算法的工程化应用,采用C语言作为编程语言。 遇到了一棘手的问题: 我将算法都...
  • (2)新建上述窗体文件对应的ui类 建议将ui类与子窗体设置成相同的名字(testUi.h、testUi.cpp),此时testUi还是一只包含默认构造函数和析构函数的空类。 (3)生成moc_testUi.cpp文件 moc文件作用:Qt程序在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,919
精华内容 43,167
关键字:

多个cpp对应h

友情链接: Java_TCPIP_Socket.rar