需要帮助 #include 似乎不起作用
need help on #include doesn't seem to be working
所以我有一个叫做HPStack的类,我必须把它包括在我的主类等。然而,我得到一个"在文件中包含来自"的错误,什么可能导致这一点?
我的字符串对象也有错误,我不知道为什么,错误是:"无法标识字符串"。
我是新的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
我不知道我错过了什么,但这并没有告诉我太多。
下面是我的代码:
#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();
}
错误是,我猜,因为这一行:
double register_[4] = {};
在声明类成员时不能初始化它们。
如果你的编译器足够新,可以支持c++ 11的特性,你可以在构造函数中使用初始化列表:
HPStack::HPStack()
: register_{}
{
}
否则必须在构造函数中手动初始化数组。
正如我在评论中指出的那样,使用register_ - 2
是没有意义的,因为它返回一个指针,因此索引变量i
将远远超出数组的末尾。
使用register_ - 1
作为pop
循环中的条件更没有意义,因为它总是非零,因此总是为真,并且循环将永远循环。
您错过了类定义末尾的;
:
class HPStack {
...
}; // <== This semicolon is required
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Visual Studio Code 中的 #include < mat.h> 不起作用
- 我正在使用 Eclipse,为什么 #include 队列不起作用?
- 从Visual Studio Express迁移到Netbeans。#include < dwmapi.h> 不起作用
- #include 守卫不起作用 - 或者我不明白
- Qt .pro文件:添加包含"include"目录的路径不起作用
- OSX 10.11.6 Make找不到指定的头文件——include-dir不起作用
- 需要帮助 #include 似乎不起作用
- C++ Visual Studio 2012 #include 不起作用