【发布时间】:2013-08-13 20:47:14
【问题描述】:
我正在处理一些遗留代码,我需要一个 StoreStrings 类存储 一些字符串并能够返回一个 MyString*。
我试过这个:
typedef char MyString[64];
class StoreStrings{
public:
void store(MyString *aStr)
{
theVec.push_back(aStr);
}
const MyString* get(){return theVec.begin();}
private:
std::vector<MyString> theVec;
};
但我很失望,因为它不能用这种语法编译。
StoreStrings myStore;
myStore.store("Hello");//cannot convert parameter 1 from 'char [6]' to 'char (*)[64]'
我必须先实例化一个 MyString。
MyString myStr = "Hello";
myStore.store(&myStr);
如何重写 StoreStrings 类以便拥有 myStore.store("Hello");编译?
【问题讨论】:
-
@RahulTripathi 那不是 C# 吗?
-
@rahul 我尝试了几个可能的解决方案,即使使用 string.c_str() 你能拿出一段 c++ 代码吗?
-
char mystring[64] 是 not 可变长度 C 字符串的声明。 “你好”没有 64 个字符。请改用 const char* 或 std::string。
-
MyString 是遗留的一部分,并不打算成为可变大小。 64 只是假定字符串的最大大小。
-
void store(MyString aStr),MyString 已经是一个字符,你也将 theVec 定义为 vector
而你正在尝试插入 MyString*