可选参数用于引用指针?

Jon*_*han 3 c++ parameters pointers reference optional

如何将第二个参数声明为可选参数?

template <typename T>
inline void Delete (T *&MemoryToFree,
    T *&MemoryToFree2 = ){
    delete MemoryToFree;
    MemoryToFree = NULL;

    delete MemoryToFree2;
    MemoryToFree2 = NULL;

}
Run Code Online (Sandbox Code Playgroud)

我在=运算符之后尝试了几个东西,比如NULL,(T*)NULL等.可以这样做吗?

编译器允许我这样做的唯一方法是使用重载...

    template <typename T, typename T2>
inline void Delete (T *&MemoryToFree, T2 *&MemoryToFree2){
    delete MemoryToFree;
    MemoryToFree = NULL;

    delete MemoryToFree2;
    MemoryToFree2 = NULL;
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*rey 12

你可以重载该功能

template <typename T>
inline void Delete (T *&MemoryToFree){
        delete MemoryToFree;
        MemoryToFree = NULL;
}

template <typename T, typename T2>
inline void Delete (T *&MemoryToFree, T2 *&MemoryToFree2){
        delete MemoryToFree;
        MemoryToFree = NULL;

        delete MemoryToFree2;
        MemoryToFree2 = NULL;
}
Run Code Online (Sandbox Code Playgroud)


AnT*_*AnT 8

您总是可以编写一个简单的"按需静态左值生成器"并将其用作参数的默认值

template <typename T> inline T& get_lvalue() {
  static T t;
  return t;
}
Run Code Online (Sandbox Code Playgroud)

在你的代码中

template <typename T> 
inline void Delete(T *&MemoryToFree, T *&MemoryToFree2 = get_lvalue<T*>())
Run Code Online (Sandbox Code Playgroud)