C++简单的类声明程序

C++ simple class declaration program

本文关键字:声明 程序 简单 C++      更新时间:2023-10-16

我在学校C++课的介绍中得到了一个程序来创建C++。我正在按照我在示例中得到的一切做所有事情,但仍然遇到错误。

w4x.cpp 被赋予,我必须创建 Molecule.h 和 Molecule.cpp。我这样做了,但是我遇到了错误,因为我的变量没有在范围内声明,但我不明白为什么。

// w4x.cpp
#include <iostream>
using namespace std;
#include "w4x.h"
#include "Molecule.h"
int main() {
    int n = MAX_MOLECULES;
    Molecule molecule[MAX_MOLECULES];
    cout << "Molecular Informationn";
    cout << "=====================" << endl;
    for (int i = 0; i < MAX_MOLECULES; i++) {
        if (!molecule[i].read()) {
            n = i;
            i = MAX_MOLECULES;
        }
        cout << endl;
    }
    cout << "Structure            Name                     Massn";
    cout << "==================================================" << endl; 
    for (int i = 0; i < n; i++)
        molecule[i].display();
}

//Molecule.h
const int MAX_STRUCT = 10;
const int MAX_NAME = 20;
class Molecule {
    char name[MAX_STRUCT];
    char rate[MAX_NAME];
    double weight;
public:
    Molecule();
    void read(const char*, const char*, double);
    void display() const;
    ~Molecule();
};

//Molecule.cpp     
#include <iostream>
#include <cstring>
using namespace std;
#include "Molecule.h"
Molecule::Molecule(){
    name[0]= '';
    rate[0]= '';
    weight = 0;
}
void::read(const char* n, const char* r, double w) {
    weight = w;
    strncpy (name, n, MAX_STRUCT);
    name[MAX_STRUCT]='';
    strncpy (rate, r, MAX_NAME);
    rate[MAX_NAME]='';
    cout << "Enter structure : ";
    cin.getline (n, MAX_CHARS);
    cout << "Enter full name : ";
    cin.getline (r, MAX_NAME);
    cout << "Enter weight : ";
    cin >> w;
}
void::display() const
{
    int x;
    for ( x=0; x<i; x++)
        cout << n << "      " << r << "        " << w << endl;
}

我的第一个问题是,如何将char name[MAX_STRUCT]; char rate[MAX_NAME]; double weight;从Molecule.h传递到Molecule.cpp

您的定义问题就在这里:

void::read(const char* n, const char* r, double w)

和这里

void::display() const

::在这里说的是,你正在类中实现一个函数。所以你需要指定哪个类和哪个函数!你现在告诉它的是,你正在类 void 中实现一个不存在的函数。

您应该将它们转换为:

void Molecule::read(const char* n, const char* r, double w)
void Molecule::display() const

您关于通过班级成员的其他问题:

类的函数可以访问其变量,因此,您无需担心这一点。只需使用变量。

另外,如果你在w4x.cpp中注意到,函数Molecule::read()是在没有参数的情况下调用的,所以你的 TA 会要求你在没有参数的情况下实现它。事实上,由于您可以直接访问Molecule::nameMolecule::rateMolecule::weight,您应该读取数据并写入这些变量,而不是询问参数。因此,读取函数将如下所示:

void Molecule::read()
{
    // read into name, rate and weight
}

此外,w4x.cpp希望read报告是否成功。这意味着您应该在Molecule::read中执行错误检查,如果没有错误,则返回0,或者在出现错误时返回-1(例如)。