Joh*_*itb 8 c++ header declaration extern
挑战:
我有这个代码无法编译.你能弄明白什么是错的吗?它给我带来了一次头痛.
// header
namespace values {
extern std::string address;
extern int port;
}
// .cpp file
std::string ::values::address = "192.0.0.1";
int ::values::port = 12;
Run Code Online (Sandbox Code Playgroud)
第一眼看上去是正确的.有多少,哪些是错误!?
一个错误:
std::string values::address = "192.0.0.1";
Run Code Online (Sandbox Code Playgroud)
是正确的形式,否则解析是
std::string::values::address = "192.0.0.1";
Run Code Online (Sandbox Code Playgroud)
并且"string"中没有成员"地址"的成员"值"...
它适用于内置类型,因为它们不能包含成员..所以int :: values是一个不明确的解析,int :: values,因为先前没有意义.
std::string (::values::address) = "192.0.0.1";
Run Code Online (Sandbox Code Playgroud)
也有效.注意,如果你键入def int sometype; 使用sometype时遇到的问题和上面的字符串一样,但不是"int".
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |