C++:将 const 与模板参数组合

标签 c++ templates constants

当我用 char * 手动替换 T 时,以下示例可以正常工作,但为什么不能正常工作:

template <typename T>
class A{
  public:
    A(const T _t) { }
};

int main(){
  const char * c = "asdf";
  A<char *> a(c);
}

使用 gcc 编译时,出现以下错误:

test.cpp: In function 'int main()':
test.cpp:10: error: invalid conversion from 'const char*' to 'char*'
test.cpp:10: error:   initializing argument 1 of 'A<T>::A(T) [with T = char*]'

最佳答案

char* 替换 T 得到一个指向 char 的 const 指针,而 c 被声明为一个指针到 const char

一个解决方案是通过值获取指针和整数类型,通过常量引用获取类类型。如果可以,请使用 Boost Call Traits为您解决这些问题。

关于C++:将 const 与模板参数组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822965/

相关文章:

c++ - LPCSTR 和 wchar_t 问题。由于参数不匹配导致的链接器错误

c++ - vector<vector> c++ 的复制构造函数

JSP 中的 Java 常量

c# - 在静态类中使用常量

c++ - 在 Allegro 5 的运行时更改基元的颜色

c++ - 如何检测传递给std::bind的实例已销毁

php - 按升序显示 wordpress 帖子

c++ - 没有空构造函数编译失败

c++ - 为可变参数模板中给定的所有类型添加模板特化

c++ - 是否有语法来防止类的实例是常量?