error: expected initializer before ‘.’ token void c.change();
时间: 2023-06-10 19:07:31 浏览: 263
这个错误通常是因为在函数体外部定义函数时,忘记了在函数名前面加上类名。在这种情况下,编译器会认为该函数是一个独立的函数,而不是类的成员函数。
请检查你的代码,确保在定义 `change()` 函数时,前面加上了类名。例如:
```
class MyClass {
public:
void change(); // 声明成员函数
};
void MyClass::change() { // 定义成员函数
// 函数体
}
```
如果你已经按照上面的方式定义了 `change()` 函数,但仍然出现了这个错误,请检查你的代码是否存在其他语法错误。
相关问题
error: expected initializer before '*' token|
错误 "expected initializer before '*' token" 指示在C++编译器中遇到了语法错误,通常发生在变量声明时忘记初始化或者使用了星号(*)但未正确地用于指针声明。在您的例子中[^1]:
```cpp
class A {
};
```
在这个`A`类定义之后,您试图创建 `A a;` 的实例,这里 `a` 应该跟一个初始化列表来分配内存,因为星号(*)在这里不是用来表示指针,而是可能误用了某种其他操作。
修复这个问题的一个简单方式是添加适当的初始化值:
```cpp
// 如果A有一个默认构造函数
A a;
// 或者如果A需要参数
A a(参数); // 根据A类的具体情况填写参数
```
至于另一个错误 "expected unqualified-id before '/' token"[^2],这表明在`#include`指令中可能有遗漏或者不正确的路径。在C++中,`<` 和 `>` 是尖括号,用于指定头文件的位置。可能是缺少了分号`;`,或者是使用了斜杠`/`而不是尖括号。修正后的代码应该类似这样:
```cpp
#include <iostream> // 使用尖括号
#include <vector>
using namespace std;
...
```
error: expected expression before '.' token
"error: expected expression before '.' token" 这是一个常见的编程错误提示,通常出现在C/C++或者某些基于C语言的框架如Java(JNI)中。这个错误表明编译器在预期找到一个表达式的地方遇到了句点('.')字符,而句点在这里通常是访问类成员或库函数的一部分,比如访问对象的属性或调用静态函数。
例如,如果你试图像这样编写:
```cpp
MyClass obj; // MyClass 是一个类
obj.member; // 正确的应该是 obj.member()
```
或者
```cpp
SomeLibrary::function(); // SomeLibrary 是一个命名空间或头文件
```
但是你写成了:
```cpp
// 错误的部分
MyClass.member; // 缺少圆括号,应该写作 obj.member()
SomeLibrary.function.; // 未提供参数,需要括号 SomeLibrary::function();
```
解决这个问题,你需要确保在句点前面有一个表达式(变量名或操作符),并且在需要的时候添加必要的括号,如果是函数调用的话。如果是在初始化或声明类的对象时,确保已经正确构造了对象。
阅读全文