我正在阅读C++项目的代码,它包含以下形式的代码:
namespace ns {
class A {};
class B {};
}
struct C {
typedef ns::A* ns::B::* type;
};
Run Code Online (Sandbox Code Playgroud)
有人可以解释这条typedef线的含义吗?type似乎是某种指针的成员的ns::B指向ns::A,但我不知道.
类A和B实际代码不是空的,但我认为这与此无关.这是一个实例.
作为" 什么是这个疯狂的C++ 11语法==> struct:bar {} foo {};? "的后续内容,我希望编译以下C++ 0x代码:
struct x {};
struct :::x {} y {};
Run Code Online (Sandbox Code Playgroud)
但是,GCC 4.7.0 20110731告诉我:
错误:在':'标记之前,类名的全局限定无效
当我退一步走向理智并为第二个UDT命名时:
struct x {};
struct a:::x {} y{}; // remember, identical to `a::: x` or `a: ::x` or `a:: :x` etc
Run Code Online (Sandbox Code Playgroud)
错误是:
错误:'a'尚未声明
看起来这三个冒号是被贬低<::> <:>而不是<:> <::>,但是这可以从[最终草案]标准中明确推断出来吗?
也许问题" 班级宣言班级的全球资格 "是否相关?
我知道PHP有相当强大的数学包,但我想要做的并不是那么复杂.我想要计算一个数字的立方根.x^3 = 100通常需要在()中求解x echo 100^(1/3).在PHP中运行此代码既不返回错误也不返回正确的数字.
我正在看两个源代码.一个使用这个:
using boost::property_tree::ptree;
Run Code Online (Sandbox Code Playgroud)
另一个使用这个:
namespace ptree = boost::property_tree::ptree;
Run Code Online (Sandbox Code Playgroud)
有什么不同?