我有一个指向常见静态方法的指针
class MyClass
{
private:
static double ( *pfunction ) ( const Object *, const Object *);
...
};
Run Code Online (Sandbox Code Playgroud)
指向静态方法
class SomeClass
{
public:
static double getA ( const Object *o1, const Object *o2);
...
};
Run Code Online (Sandbox Code Playgroud)
初始化:
double ( *MyClass::pfunction ) ( const Object *o1, const Object *o2 ) = &SomeClass::getA;
Run Code Online (Sandbox Code Playgroud)
我想将此指针转换为静态模板函数指针:
template <class T>
static T ( *pfunction ) ( const Object <T> *, const Object <T> *); //Compile error
Run Code Online (Sandbox Code Playgroud)
哪里:
class SomeClass
{
public:
template <class T>
static …Run Code Online (Sandbox Code Playgroud) 有2个非模板类A,B有一些静态模板方法.
从类A静态方法中B调用,从类B静态方法A调用.源代码仅用于说明(不是真实代码)......
啊
#include "B.h"
class A
{
public:
template <class T>
void f1 ()
{
T var1= ...;
T var2 = B::f4(T);
}
template <class T>
T f2()
{
return ...
}
};
#include "A.h"
class B
{
public:
template <class T>
void f3 ()
{
T var1= ...;
T var2 = A::f2(T); //Error
}
template <class T>
T f4()
{
return ...
}
};
Run Code Online (Sandbox Code Playgroud)
我在NetBeans中遇到g ++编译器的麻烦.在编译期间发生以下错误:错误:在嵌套名称说明符g …
我想在我的模板类中重载std :: swap.在以下代码中(简化)
#ifndef Point2D_H
#define Point2D_H
template <class T>
class Point2D
{
protected:
T x;
T y;
public:
Point2D () : x ( 0 ), y ( 0 ) {}
Point2D( const T &x_, const T &y_ ) : x ( x_ ), y ( y_ ) {}
....
public:
void swap ( Point2D <T> &p );
};
template <class T>
inline void swap ( Point2D <T> &p1, Point2D <T> &p2 ) { p1.swap ( p2 ); }
namespace …Run Code Online (Sandbox Code Playgroud)