0

したがって、HPStack というクラスがあり、それをメイン クラスなどに含める必要があります。しかし、"In File included from" エラーが発生します。

また、私の文字列オブジェクトにもエラーがあり、理由はわかりません。エラーは「文字列を識別できません」です。

私は C++ が初めてなので、事前に感謝します。

私が得ているエラー(私は思う)は次のとおりです:

error: expected unqualified-id before "namespace"
error: expected `,' or `;' before "namespace"
error: expected namespace-name before ';' token
error: `<type error>' is not a namespace

何が欠けているのかわかりませんが、それは私に多くを語っていません。

ここに私のコードがあります: class.h ファイル。

#ifndef HPSTACK_H
#define HPSTACK_H

class HPStack {
public:
    HPStack();



    void push(double);
    double pop();
    double peek();



private:
    double register_[4];

}

#endif 

class.cpp ファイル。

#include "HPStack.h"
#include <cstdlib>



HPStack::HPStack() : register_{}{
}

double HPStack::push(double x) {

    for (int i = 2; i >= 0; i--) {
        if (isdigit(register_[i])) {

            register_[i] = register_[i + 1];
        }
        register_[0] = x;
    }
}

double HPStack::pop() {

    return register_[0];

    for (int i = 0; i < 3; i++) {
        register_[i] = register_[i + 1];
    }
}

double HPStack::peek() {

    return register_[0];
}

そして私のメインファイル:

#include "HPStack.h"
#include <cstdlib>
#include <string>
#include <sstream>
#include <iostream>


using namespace std;

int main() {

    HPStack stack;
    string line;

    while (getline(cin, line)) {
        stringstream expression(line);
        string token;
        while (expression >> token) {
            if (isdigit(token[0])) {
                stack.push(atof(token.data()));
            } else if (token == "+") {
                double x = stack.pop();
                double y = stack.pop();
                double z = (y + x);
                stack.push(z);
            }
        }
        cout << stack.peek();
    }
4

2 に答える 2

1

;クラス定義の最後に がありません:

class HPStack {
    ...
};  // <== This semicolon is required
于 2013-05-01T18:59:48.340 に答える