gpt4 book ai didi

c++ - 为什么这个单独的定义会导致错误?

转载 作者:可可西里 更新时间:2023-11-01 17:38:40 25 4
gpt4 key购买 nike

挑战:

我的这段代码无法编译。你能找出问题所在吗?有一次让我很头疼。

// 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"; 

并且在“string”中没有成员“values”和成员“address”……

它适用于内置类型,因为它们永远不能包含成员..所以 int::values 是一个明确的解析,int::values,因为先验没有意义。

std::string (::values::address) = "192.0.0.1"; 

也可以。请注意,如果您 typedef int sometype;您使用 sometype 时会遇到与上述字符串相同的问题,但使用“int”时不会。

关于c++ - 为什么这个单独的定义会导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358524/

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