【发布时间】:2018-06-14 07:56:43
【问题描述】:
我有一个返回 C-String 的 C-Libraray 函数
const char* myFuncC(struct myS *);
现在我写一个类映射器:
class myC {
private:
struct myS * hdl
...
public:
const char* myFunc() {
return myFuncC(hdl);
}
// want to have...
const std::string& myFuncS() {
return ??? myFuncC(hdl);
}
}
现在我想返回一个:const std::string& 而我不想想要复制 C-String 指针数据
我该怎么做?
更新
是否有像 const C++-String 类并使用 const C-String 指针 作为字符串源的 C++ 类?
我会称这个类为 C++-String-External ... External 意思是...使用 external 源作为存储...在我的例子中是"常量字符 *"
【问题讨论】:
-
我更新了这个例子……对,我想让 const std:.string& 作为类方法的返回。
-
你在猜。不。获取good C++ book。
-
没有魔法可以让你返回一个没有引用的底层对象的引用。而且,如果您希望避免悬空引用地狱,请不要使用引用进行货物崇拜编程。首选值而不是引用作为默认值。
-
因为您的请求的本质表明对某些 C++ 基础知识存在误解。这并不是指出您个人的缺点,而是帮助您总体上编写更好的 C++,并避免将来出现此类问题。
-
@AndreasOtto 请不要那么固执。
std::string是一个类,它具有各种额外的特性。该字符串在内部存储一个以空字符结尾的字符数组(从 C++11 开始)。但那里还有更多。您不能简单地将 C 风格的字符数组解释为 C++std::string。