我正在处理一个相当大的项目,我提出了一个声明,我不明白。它看起来像这样:
visitor::DFV< Outer > visitor( *this, this->graph(), this->store() );
我会给你更多的代码,但它真的很大,我无法确定哪些部分与此相关。有趣的是,我甚至在结构DFV中找不到任何名为visitor
的函数,或者它的前辈,Eclipse也没有。我很确定我没有得到这个权利的含义,我无法找到任何对这个c ++语法的引用。任何人都可以向我解释这样的陈述的含义吗?
Type<SomeClass> foo(x, y);
答案 0 :(得分:3)
它不是函数调用,而是变量定义,(...)
是构造函数参数列表。
是否会更清楚
typedef visitor::DFV< Outer > Type;
//...
Type visitor(*this, this->graph(), this->store());
或
Type visitor(x, y, z);
答案 1 :(得分:0)
您的通用示例:
Type<SomeClass> foo(x, y);
这是一个变量定义,其中Type<SomeClass>
是变量的类型,foo
是其名称,其余是传递给类构造函数的参数。
类模板Type
将有一些构造函数,在其定义中找到(通常在其头文件中),如下所示:
template< typename T >
class Type
{
public:
Type( int x, int y );
};
答案 2 :(得分:0)
如果你没有得到这种语法,我认为你不太了解C ++。
visitor::DFV< Outer > visitor( *this, this->graph(), this->store() );
我会将此解释为类访问者中的静态函数或命名空间访问者中的全局函数,这就是我可以用可用代码说的所有内容。 <Outer>
部分是函数的模板参数,例如,如果我做了像这样的模板
template<class T>
int someFunc<T>(T i, Tx)
{
//whatever operations in the function
}
然后,当我想调用该函数时,我就这样做了
int i = someFunc<int>(2, 3);
//alternatively
int x = someFunc<std::string>("Hello", "World");
*this
是指向调用函数的类的derefenced指针,this->graph()
是调用此函数的类中graph()
方法的返回值,{{1} }与图表相同,但返回值为this->store()
。
第二位是实例化像这样的模板类
store()