我需要将一个参数传递给write()函数。它要求一种'const void *'我是一个PHP人,并且不太了解C ++。
这是我的参数:
const fmx::Text& distance = dataVect.AtAsText(3);
我不知道有任何其他方式来吸引那个领域。我很乐意宣布它为const void *但我不知道如何。
我想只是转换它会比试图以正确的方式拉动它更容易吗?
错误消息:无法将const fmx :: Text转换为const void * for argument 2
write(fd, distance, 4);
我知道这有效,所以我可以转换吗?
const void* s = "5000";
这是FileMaker中的一个插件,所以我在这里并没有真正得到c ++。
是否有更多人需要帮助我解决这个问题?
非常感谢!
答案 0 :(得分:2)
如果fmx :: Text是指针类型,编译器会自动将对它的引用转换为void*
。您需要使用address-of运算符为函数指定一个使用的指针:
write(fd, &distance, 4);
答案 1 :(得分:1)
我真的不知道filemaker,但是this link表明fmx :: Text有一个GetBytes函数。然后,您可以将指针传递给填充此函数的缓冲区。
答案 2 :(得分:0)
我假设你真的想要文本字符串。
我认为您需要检查api for fmx :: Text以获取所需的字符串。 Here是我发现的字符串。
看起来类型将数据存储为UTF16,因此您必须运行一些代码来获取字符串,然后将其传递给您的写函数:
//a function to convert to a normal string
std::string getString(fmx::Text& Text)
{
char buffer[512] = {0}; //NOTE YOU HAVE A STRING SIZE LIMIT
// convert original text to ASCII text
outText.GetBytes( buffer, sizeof(buffer)-1, 0, Text.GetSize(), fmx::Text::kEncoding_Native );
return buffer;
}
然后调用函数
std::string myString = getString(distance);
write(fd, myString.c_str(), myString.size());
注意我在这里假设很多...你想要当前编码中的字符串,而不是'distance'中的原始UTF16数据。并且GetBytes不会破坏缓冲区中的空字符....
您还需要包含< string>在你的c ++文件中。