C++/CLR实现读取串口数据存入文件 此函数编译后出现illegal call of non-static member function, etc

最近发现用.NET可以很方便的实现串口数据读取并将数据存入文件,但涉及到应用system^string以及std::string转化,还有函数调用方面的一些问题,请高手帮... 最近发现用.NET可以很方便的实现串口数据读取并将数据存入文件,但涉及到应用system^ string 以及std::string转化,还有函数调用方面的一些问题,请高手帮忙解答一下我的编译错误:
我在函数中应用了SYSTEM STRING 转 STD STRING 的函数:
void MarshalString ( String ^ s, string& os )
{
using namespace Runtime::InteropServices;
const char* chars =
(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
}
然后在主函数中调用
std::string buffer;
PortCommunication::MarshalString(message, buffer);
后出现编译错误
error C2352: 'PortCommunication::MarshalString' : illegal call of non-static member function。请问这是为什么?

此外,我调用函数
// write buffer data to txt file
void WriteDataToFile(string sentence)
{
char quit = 'c';
string str;
//open file to write
ofstream outfile ("GPSdata.txt", ios_base::out);
if(!outfile) {
cerr << "cannot open GPSdata.txt file !!!\n";
exit (-1);
}

//allow user to write to file
while (quit != 'q' && quit != 'Q')
{
getline(sentence, str);
outfile << str << endl;
cout<<"Enter q to quit or c to continue entering data.\n";
cin >> quit;
}

//close file
outfile.close();
}
在调用这个函数把BUFFER的数据写入文件,出现错误
GPSSerialPort.cpp(85) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::string'
请问这种情况怎么解决?

由于字数原因,我无法粘贴源代码,请高手指点一二,如有需要,我可以将源码传给你,谢谢!!
展开
 我来答
匿名用户
2011-01-31
展开全部
第一个问题,那函数在一个类里吧,在的话不是静态函数不能直接调用。通过对象来调用函数。
第二个问题,参数类型不匹配,参数个数不匹配,或者没有显式指明实参类型。

参考资料: sername

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式