我碰到了basic.scope.namespace#1并且脑å里有些ä¸æ¸…楚的地方:
namespace Foo {
int a;
}
namespace Foo {
// Foo::a = 2; // Why can't do an assignment here?
void b() {
Foo::a = 2; // OK
}
}
输出
error: ‘a’ does not name a type
æˆ‘å¾ˆå¥½å¥‡ä¸ºä»€ä¹ˆæˆ‘ä»¬æ— æ³•å¯¹å‘½å空间范围进行分é…,
虽然功能å—内的赋值是æ£ç¡®çš„å—?
有什么想法å—?
ç”案 0 :(得分:5)
您ä¸èƒ½åœ¨å‡½æ•°ä¹‹å¤–使用一般è¯å¥ã€‚
也许您首先需è¦å£°æ˜Žè€Œç¬¬äºŒä¸ªå®šä¹‰ï¼Ÿ
åƒ
namespace Foo {
extern int a; // Declare variable
}
namespace Foo {
int a = 2; // Define and initialize the variable
}
ç”案 1 :(得分:2)
 Â我很好奇为什么命å空间作用域ä¸çš„赋值被视为定义,
赋值是表达å¼è¯å¥ï¼Œè¡¨è¾¾å¼ä¸èƒ½åœ¨å‘½å空间范围内。åªæœ‰å£°æ˜Žè¯å¥å¯ä»¥åœ¨å‘½å空间范围内(定义是声明)。
 Â虽然功能å—内的赋值ä¸æ˜¯å—?
表达å¼è¯å¥å¯ä»¥åœ¨å—范围内。