嵌套类的问题。 "error: expected unqualified-id before '{' token"
Trouble with nested classes. "error: expected unqualified-id before '{' token"
我在声明嵌套类时遇到问题。我的问题是如何正确声明嵌套类并调用其成员。我尝试过谷歌搜索它并尝试了不同的方法,但我似乎无法让它工作。现在我在 LongInt::D igit{ 行上收到"错误:在'{'令牌之前预期的非限定 id"
这就是我正在尝试的:
头文件
class LongInt {
public:
class Digit{
public:
int data;
Digit(int d);
};
// Constructor
LongInt();
};
CPP 文件
#include <iostream>
#include "LongInt.h"
using namespace std;
LongInt::Digit{
Digit next;
Digit prev;
LongInt::Digit::Digit (int d) {
data = d;
next = NULL;
prev = NULL;
}
}
LongInt::Digit front;
LongInt::Digit back;
LongInt::Digit curr;
LongInt::LongInt() {
front = NULL;
back = NULL;
curr = NULL;
}
LongInt::Digit{
Digit next;
Digit prev;
LongInt::Digit::Digit (int d) {
data = d;
next = NULL;
prev = NULL;
}
};
看起来您正在对Digit
类进行"部分重新声明",这是不可能的。
您应该在标头中完全声明嵌套类
class LongInt {
public:
class Digit{
public:
int data;
Digit(int d);
Digit* next;
Digit* prev;
};
// Constructor
LongInt();
};
而您的构造函数只是
LongInt::Digit::Digit (int d) : data(d), next(NULL), prev(NULL) {
}
内部类的成员应在内部类中声明。另外,我认为有几个地方你想有指针,但你有对象(你通常想NULL
分配给指针)。
此外,您只声明了一个接受int
的Digit
构造函数,而没有声明不接受参数的构造函数,因此您不能在没有参数的情况下声明Digit
。
最后,你真的不应该在LongInt::LongInt()
里面做这三个赋值,因为这些变量不是指针。
这是.h
文件:
class LongInt {
public:
class Digit{
public:
Digit* next;
Digit* prev;
int data;
Digit(int d);
};
// Constructor
LongInt();
};
这是.cc
文件:
#include <iostream>
#include "LongInt.h"
using namespace std;
LongInt::Digit::Digit (int d) {
data = d;
next = NULL;
prev = NULL;
}
LongInt::Digit front(1);
LongInt::Digit back(1);
LongInt::Digit curr(1);
LongInt::LongInt() {
// front = NULL;
// back = NULL;
// curr = NULL;
}
相关文章:
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 为什么我的功能在使用 goto 时会给我带来"expected primary-expression before '}' token"?
- 使用结构和数组时的"expected primary expression before '.' token"
- 如何解决"Expected expression before " = " token"?
- 错误:创建模板类时"expected unqualified-id before '{' token"
- 如何解决"expected constructor, destructor, or type conversion before ‘(’ token"错误?
- 这个编译器错误是什么意思 - "qualified-id in declaration before ‘=’ token" C++?
- 获取链表上的"expected ‘)’ before ‘&’ token"到 BST 构造函数签名
- 使用宏访问指向数据成员的指针会导致"error: expected unqualified-id before ‘*’ token"
- "error: expected primary-expression before '<=' token" 我做错了什么?
- 内存集调用位置的"error: expected constructor, destructor, or type conversion before '(' token"
- 设置if流,获取'error: expected initializer before ‘.’ token'
- 在2D伊辛模型上工作。C++新手。我在第 23 行收到错误"expected unqualified-id before '{' token"
- 我的代码看起来不错。为什么我要得到"error: expected primary-expression before ')' token"?
- 如何修复"Expected Primary-expression before ')' token"错误?
- C++错误"tabulate.cc:19: error: expected primary-expression before ',' token"
- 使用多个文件时"array bound is not an integer constant before ']' token"
- "expected initializer before '<' token"尝试模板成员专用化
- 为什么海湾合作委员会说"a function-definition is not allowed here before '{' token"?
- C++:"error: expected ',' or '...' before '(' token"