簡體   English   中英

為什么不能為命名空間中的變量分配值?

[英]Why can't I assign a value to a variable in a namespace?

我的代碼如下所示,當我編譯它時,我收到此錯誤:

two.cpp:5:錯誤:'='標記之前的預期構造函數,析構函數或類型轉換

#include <iostream>
using namespace std;
namespace a1{
    int a=3;
    a=4;
}

int main(){
    cout << a1::a<<endl;
}

當我在兩個文件中定義一個名稱空間時遇到了這個問題,在第二個文件中,我無法為第一個文件中定義的變量賦值。

我正在學習Beginning ANSI C ++,並且在本書中找不到與此有關的任何信息。

您可以在名稱空間范圍內使用聲明(包括可以定義的聲明),例如

int a = 3;

但是,您不能在名稱空間范圍內使用非聲明語句。

例如,諸如

a = 4;

不是聲明:它純粹是在尋求效果。

但是,您可以將其放在函數主體中,例如main

干杯,……

命名空間的目的是避免名稱沖突。 因此,將變量和類聲明用名稱空間括起來。 但是名稱空間本身並不能為運行代碼提供支持。 你的a = 4是怎么回事? 陳述? 那應該在哪里執行? 您需要將其放在函數或方法中,而不是在名稱空間中。

您的第二個文件是否知道int a的定義; 命名空間不能像其他語言那樣神奇地工作,您仍然必須在其他文件或列表中包括一個包含int定義的頭文件,或者在列表中將其定義為外部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM