1
9
不,你不能这么做-字符串文字和常量字符*是可以互换的。一种解决方法是引入一个特殊类来保存指向字符串文本的指针,并使构造函数只接受该指针。这样,每当需要传递文本时,就调用该类的构造函数并传递临时对象。这并不能完全防止误用,但会使代码更易于维护。 |
2
20
基于 sbi idea :
|
3
19
可以 完了!我提出了一个使用C++03的解决方案,但没有包装器类(它破坏了返回语句中的一些隐式转换)。
现在的问题是,对于字符串文本,编译器仍然认为
所以,诀窍是降低
解决方案:
|
4
3
如果您确切地知道编译器和平台如何处理字符串文本,那么就有可能编写一个解决方案来实现这一点。如果您知道编译器总是将字符串文本放入内存的特定区域,则可以对照该内存的边界检查指针。如果它在那个块中,你就得到了一个字符串文本;否则,您将在堆或堆栈上存储一个字符串。 但是,此解决方案是特定于平台/编译器的。它不会是便携式的。 |
5
1
在某些平台上,我不得不将字符串文本声明为
与其担心接收者,不如尝试用
|
6
1
有了C++14中新的用户定义的文本(与Clang 3.5一样,它也适用于C++11),就有了一个优雅的解决方案:
有一个缺点:您必须附加
|
Deconimus · C++模板方法重载和多态性类访问 6 年前 |
Vincent · 一种类型特征,标识哪个类提供重载解析选择的函数 6 年前 |
Lingxi · C中的默认参数vs重载++ 6 年前 |
Slime recipe · 多目标框架导致CS1503 7 年前 |
Dick Lucas Carl · 函数重载的替代方法 7 年前 |
Ali · Typescript rest参数具有两种可能的数组类型 7 年前 |