gpt4 book ai didi

c++ - 使用 memset 函数时对数组的引用是不明确的错误

转载 作者:行者123 更新时间:2023-11-30 00:49:00 25 4
gpt4 key购买 nike

我不明白为什么我会犯这个“奇怪”的错误。我读了类似的问题,但没有回答我的问题。如果我在 main 函数而不是全局范围内定义数组,则没有错误。但是假设我必须在全局范围内定义这个数组。为什么我会犯这个错误?这是代码:

#include <iostream>
#include <cstring>

using namespace std;

int right[1005];
int main()
{
memset(right,0,sizeof(right));
return 0;
}

这里是错误:

memset2.cpp: In function ‘int main()’:
memset2.cpp:9:9: error: reference to ‘right’ is ambiguous
memset(right,0,sizeof(right));
^
memset2.cpp:6:5: note: candidates are: int right [1005]
int right[1005];
^
In file included from /usr/include/c++/4.8/ios:42:0,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from memset2.cpp:1:
/usr/include/c++/4.8/bits/ios_base.h:924:3: note: std::ios_base& std::right(std::ios_base&)
right(ios_base& __base)
^
memset2.cpp:9:24: error: reference to ‘right’ is ambiguous
memset(right,0,sizeof(right));
^
memset2.cpp:6:5: note: candidates are: int right [1005]
int right[1005];
^
In file included from /usr/include/c++/4.8/ios:42:0,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from memset2.cpp:1:
/usr/include/c++/4.8/bits/ios_base.h:924:3: note: std::ios_base& std::right(std::ios_base&)
right(ios_base& __base)
^

最佳答案

命名空间 std 已经命名为 right 并且您通过指令将 std 中的名称包含在全局命名空间中

using namespace std;

为了避免歧义,请使用限定名称

memset( ::right, 0, sizeof( ::right ) );

或者删除该指令,在这种情况下,您可以使用非限定名称 right,因为编译器将仅在全局命名空间中查找该名称。

关于c++ - 使用 memset 函数时对数组的引用是不明确的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132298/

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