静态类变量 - 与构造函数一起使用

时间:2010-06-28 13:09:10

标签: c++

我有一个带有静态变量的类:null。

static Pointer<Value> Null;

指针是一个使用引用计数内存管理的类。

然而,我收到一个错误:没有匹配函数来调用Pointer :: Pointer()

在线:

Pointer<Value> Value::Null(new Value());

感谢。

指针类的摘录:

template <typename T>
class Pointer
{
 public:
  explicit Pointer(T* inPtr);

构造函数来源

  mPtr = inPtr;
  if (sRefCountMap.find(mPtr) == sRefCountMap.end()) {  
    sRefCountMap[mPtr] = 1;
  } else {
    sRefCountMap[mPtr]++;
  }

3 个答案:

答案 0 :(得分:1)

该行:

static Pointer<Value> Null;

调用Pointer :: Pointer()构造函数。它表明你的Pointer类没有这样的构造函数,而是有一个接受void*的构造函数。所以尝试将其改为

static Pointer<Value> Null(0);

答案 1 :(得分:0)

我假设你的班级名为Value。

// Header file
class Value
{
public:
    ...
    static const Pointer<Value> Null;
};

// This should be in the cpp file.
const Pointer<Value> Value::Null(new Value);

答案 2 :(得分:0)

我相信应该是这样的:

// In the header file.
class Value
{
public:
    ...
    static const Pointer<Value> Null;
};

// In the cpp file.
const Pointer<Value> Value::Null(reinterpret_cast<Value*>(0));