Ani*_*rma 1 c++ function mediapipe
::mediapipe::Status RunMPPGraph() {
std::string calculator_graph_config_contents;
MP_RETURN_IF_ERROR(mediapipe::file::GetContents(
FLAGS_calculator_graph_config_file, &calculator_graph_config_contents));
LOG(INFO) << "Get calculator graph config contents: "
<< calculator_graph_config_contents;
mediapipe::CalculatorGraphConfig config =
mediapipe::ParseTextProtoOrDie<mediapipe::CalculatorGraphConfig>(
calculator_graph_config_contents);
Run Code Online (Sandbox Code Playgroud)
这是 Google 的Mediapipe提供的较大代码的一小部分,它使用范围解析运算符来定义RunMPPGraph(). 我对这个定义一无所知。有人可以告诉我这是怎么回事吗?
这看起来像一个函数,我很确定它是:::mediapipe::Status RunMPPGraph()... 但是定义函数的基本方法是 ---> ReturnType FunctionName(parameters),在这个程序中RunMPPGraph是名称,所以这意味着::mediapipe::Status是返回类型。在主函数中,RunMPPGraph() 是用这个语句 ---> 调用的,::mediapipe::Status run_status = RunMPPGraph();所以这意味着::mediapipe::Status是某种形式的用户定义的数据类型。所以我想知道我们是否可以分解::mediapipe::Status成更小的部分?
C++ 中的解析运算符以不同的方式使用:
1-访问另一个类中的类:
class A
{
...
class B
{
static int var;
}
}
int x =A::B::var.
Run Code Online (Sandbox Code Playgroud)
2- 当存在同名的局部变量时访问全局变量。
int gval = 5;
{
int gval = 10;
int y = ::gval;//the value assign for y is 5
}
Run Code Online (Sandbox Code Playgroud)
3- 访问类内的静态变量。
class A
{
static int x;
};
int y = A::x;
Run Code Online (Sandbox Code Playgroud)
4- 从多重继承中使用时。
class A
{
protected:
int l;
}
class B
{
protected:
int l;
}
class c: class A, class B
{
public:
int f()
{
int c1 = A::l;
int c2 = B::l;
}
}
Run Code Online (Sandbox Code Playgroud)
5- 对于命名空间。
您的情况满足第 2 项。