编译时指针"does not have a type"?
Pointer "does not have a type" when compiling?
这是我的代码。
struct player
{
char* name;
int* id;
id = new int[5];
};
当我编译时,它说"错误:'id'没有命名类型",指向指针为 5 个整数分配空间的行。
不要问我为什么需要一个整数数组;这是用于课堂项目并且是必需的(我们的老师喜欢让我们做不必要的事情来给我们练习(。
你是如何想出这段代码的,你期望它做什么?
此行
id = new int[5];
看起来像一个表达式语句。此语句在类定义中做什么?表达式语句属于函数内部,不属于其他任何地方。不允许将它们注入到类定义中。他们不属于那里。这是编译器通过该错误消息告诉您的:它需要下一个成员声明的类型名称,相反,它看到的内容以id
开头,并且在该上下文中通常没有意义。
如果您尝试使用内联初始值设定项,正确的语法是
struct player
{
char* name;
int* id = new int[5];
};
初始值设定项必须是声明的一部分,如上所示。你不能只是把它拆分成一个单独的语句,把它塞进类定义中,并期望编译器弄清楚你的意思。
否则(即,如果您没有尝试使用内联初始值设定项(,则必须在构造函数中初始化player::id
struct player
{
char* name;
int* id;
player(): id(new int[5])
{}
...
};
(当然,此类的正确实现需要遵循三法则。
或者您可以从外部初始化它。这里的正确方法取决于您的意图。
试试这个:
struct player
{
char *name;
int id[5];
};
不能在结构中键入代码行。您只定义变量。结构 预期您正在定义一个新变量。因此,错误指出 id 不是像 int 和 char 这样的类型定义。
如果您坚持使用指针,则可以在结构中执行此初始化。
a.id = new int[5];
或
里面像另一个答案:
struct player
{
char *name;
int id[5];
};
相关文章:
- unordered_set .find 方法无法编译的 C++ "expression must have class type"错误
- 编译为 cuda 内核调用提供了"expression must have integral or unscoped enum type"
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- 调用 list.size() 方法给出错误"expression must have class type"
- 为什么这段代码抱怨"a non-type template parameter cannot have type"?
- 模板元编程:"does not have integral or enumeration type"
- 为什么我会收到"Expression must have a class type"错误?(C++)
- C++ 中数组的"expression must have pointer-to-object type"是什么?
- 仅当链接函数 C++ 时,才会发生"Expression must have class type error"
- 字符串初始化失败:"expression must have integral or unscoped enum type"
- 错误 - "expression must have a class type" - c++
- "Expression must have class type"错误
- deque.push_front() 给出错误"expression must have class type"
- "does not have a class type"错误
- 使用 "this" 关键字时的"Error: expression must have a pointer type"
- 在 2D 阵列分配期间对 calloc 进行"expression must have (pointer-to) function type"
- 错误消息在 C++ 中显示为"expression must have integral or enum type"
- 获取"Use of undefined type"和"Must have class/struct/union"错误
- 这个错误是什么意思" expression must have pointer-to-class type"?
- 编译时指针"does not have a type"?