gpt4 book ai didi

c++ - 枚举指针可以指向常量值吗?

转载 作者:行者123 更新时间:2023-11-28 06:38:23 24 4
gpt4 key购买 nike

我正在编写一些代码,其中定义了一个“枚举”来描述错误类型。每当调用某个函数时,它都会将“枚举指针”作为参数。然后该函数将使用“常量枚举”值设置传入的错误变量。当我运行该程序时,出现运行时错误。我提供了一些代码来描述我的问题:

enum error
{
No_Exist=0,
No_Error,
Unknown,
};

bool process_something(..., error *err)
{
....
....
....
*err = No_Error;
return 1;
}

int main()
{
error *err_val;
if(process_something(...,err_val))
{
.....
.....
}
.....
return (0);
}

我想知道是否可以为指针枚举变量赋值“No_Error”?

最佳答案

当你看到这样的函数时:

void foo(int*);

这并不意味着您需要传递显式声明的 int* 变量。以下是错误的用法:

int* p;
foo(p);

以下是正确的,但不合适:

int* p;
int a;
p=&a;
foo(p); // p points to a

以下也是正确的(但再次不正确,IMO):

 int* p;
p = new int;
foo(p); // p points to allocated memory

最正确的用法(根据手头的问题)是:

int a;
foo(&a);

请记住 int*(或任何 T*)说的是给我一个地址,而不是说给我一个指针.另一个例子可以引用。如果一个函数是这样的:

void bar(int&);

并不意味着您必须声明一个 int 引用并传递它:

int a;
int &r = a;
bar(r);

而是传递 a 本身。函数需要一个引用(L 值)。

关于c++ - 枚举指针可以指向常量值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com