小编Ian*_*Ian的帖子

C++,函数指针到模板函数指针

我有一个指向常见静态方法的指针

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)

c++ templates function-pointers

21
推荐指数
3
解决办法
5万
查看次数

错误:嵌套名称说明符中使用的类型不完整

有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 …

c++ g++

19
推荐指数
3
解决办法
4万
查看次数

C++,重载std :: swap,编译错误,VS 2010

我想在我的模板类中重载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)

c++ swap overloading visual-studio-2010

4
推荐指数
1
解决办法
1702
查看次数