提问者:小点点

当将类文件分离为.h和.cpp文件时,我如何通过包含.h文件在主文件中定义它?


所以我实现了一个简单的测试类,这样我就把文件分成:compte.h:

#ifndef COMPTE_H
#define COMPTE_H
#include <iostream>
class compte
{
public:
    static int n;
    int numCompte;
    char* nom;
    double solde;
public:
    compte(const char* = NULL, const double & = 0);
    ~compte();
};

和compte.cpp

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

int compte::n = 1000;
    
compte::compte(const char* nom, const double &solde)
{
    this->solde = solde;
    this->nom = new char[strlen(nom)];
    strcpy(this->nom, nom);

    numCompte = n++;
}
compte::~compte()
{
    delete[] nom;
}

但是,当我包含compte.h时,我会得到一个对类的成员方法的未标识的引用,当我包含compte.cpp时,我只想知道我可以添加什么来包含.h文件,而不是.cpp


共2个答案

匿名用户

头文件compte.h末尾缺少#endif

#ifndef COMPTE_H
#define COMPTE_H
#include <iostream>
class compte
{
public:
    static int n;
    int numCompte;
    char* nom;
    double solde;
public:
    compte(const char* = NULL, const double & = 0);
    ~compte();
};

#endif

这是一个主文件的示例,您可以使用它进行测试

#include "compte.h"
#include <memory>
using namespace std;

int main()
{
    unique_ptr<compte> account = make_unique<compte>("account", 100);
    cout << account->solde; 
}

编译并运行:

g++compte.h compte.cpp main.cpp-o main.exe

./main.exe

匿名用户

属性应该是私有的。我从未使用过库,而是使用了库。