我有這段代碼無法編譯。你能弄清楚什麼是錯的?它給我造成了一次頭痛。
// header
namespace values {
extern std::string address;
extern int port;
}
// .cpp file
std::string ::values::address = "192.0.0.1";
int ::values::port = 12;
它看起來正確的第一眼。有多少,哪些是錯誤!?
我有這段代碼無法編譯。你能弄清楚什麼是錯的?它給我造成了一次頭痛。
// header
namespace values {
extern std::string address;
extern int port;
}
// .cpp file
std::string ::values::address = "192.0.0.1";
int ::values::port = 12;
它看起來正確的第一眼。有多少,哪些是錯誤!?
一個錯誤:
std::string values::address = "192.0.0.1";
是適當的形式,否則分析是
std::string::values::address = "192.0.0.1";
並且沒有部件「的值」與「串」內部的部件的「地址」 ..
它將適用於內置類型,因爲它們不能包含成員..所以int :: values是一個不可否認的解析,int :: values,因爲先前沒有意義。
std::string (::values::address) = "192.0.0.1";
也有效。請注意,如果你鍵入int int sometype;你可能會遇到同樣的問題,就像使用字符串一樣使用某種類型,而不是使用「int」。
哈,你是贏家。整潔:) – 2010-03-01 19:50:12
固定。根據litb的更正。 – 2010-03-01 20:15:17
,我遲到了比賽,但我寧願寫.cpp文件爲:
// .cpp file
namespace values {
std::string address = "192.0.0.1";
int port = 12;
}
當然,這並不解決您曾與friend
申報的問題。
我懷疑我的「地址」的東西最初的例子是跛腳:)朋友的例子好多了。我同意你的看法,這種定義是更好的:) – 2010-03-01 21:35:26
編譯器說了什麼? – 2010-03-01 19:41:20
你知道答案了嗎?聽起來是這樣的;) – 2010-03-01 19:44:00
@Nikolai,嘗試沒有xD更具挑戰性 – 2010-03-01 19:44:38