请问以下错误的意识是什么[Error] expected primary-expression before '.' token
时间: 2023-09-26 18:09:26 浏览: 70
这个错误通常是因为在 C++ 的代码中,出现了一个非法的语法结构。具体来说,这个错误提示意味着在一个成员访问操作符(`.`)之前缺少了一个有效的表达式。例如,下面的代码就会出现这个错误:
```
struct MyStruct {
int myMember;
};
int main() {
MyStruct myObject;
myObject. // 缺少表达式
return 0;
}
```
在上面的例子中,我们创建了一个名为 `MyStruct` 的结构体类型,并在 `main` 函数中创建了一个名为 `myObject` 的结构体对象。然而,在访问 `myObject` 的成员变量之前,代码中出现了一个空的成员访问操作符,导致编译器报错。要解决这个错误,我们需要在 `.` 操作符之前添加一个有效的表达式,例如:
```
struct MyStruct {
int myMember;
};
int main() {
MyStruct myObject;
myObject.myMember = 42; // 添加表达式
return 0;
}
```
在上面的修复后,我们成功地访问了 `myObject` 的 `myMember` 成员变量,并将其设置为了整数值 `42`。
相关问题
36 33 D:\C++代码包\0709.cpp [Error] expected primary-expression before '&' token
这个错误通常是由于在函数调用时出错导致的。根据你提供的错误信息,问题可能出在函数调用的地方。请确保你正确调用了 `swap()` 函数并传递了正确的参数。
以下是一个可能导致该错误的示例:
```cpp
swap(&arr[i], &arr[j]); // 错误的调用方式
```
正确的调用方式是:
```cpp
swap(arr[i], arr[j]); // 正确的调用方式
```
请注意,`swap()` 函数中的参数不需要取地址(`&`),因为数组名本身就是指向数组第一个元素的指针。
你可以对代码进行相应的更改,然后再次运行以解决这个问题。
getline(cin, tree[i].s);是错误的,提醒了[Error] expected primary-expression before '[' token
非常抱歉,我之前的回答有一个错误。在C++中,结构体的成员访问使用点操作符(`.`)而不是方括号(`[]`)。因此,正确的语法是 `getline(cin, tree[i].s)` 而不是 `getline(cin, tree[i].s)`。
下面是修改后的代码:
```cpp
#include <bits/stdc++.h>
using namespace std;
typedef struct {
string s;
} tree[101];
int main()
{
int n;
cin >> n;
cin.ignore(); // 忽略换行符
for (int i = 1; i <= n; i++) {
getline(cin, tree[i].s);
}
int a[101] = { 0 }; // 初始化为0
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
if (tree[j].s == tree[i].s) {
a[j]++;
}
}
}
for (int i = 1; i <= n; i++) {
cout << a[i] << endl;
}
return 0;
}
```
现在代码应该可以正常编译和运行。抱歉给你带来了困惑。
阅读全文