永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-02-23 02:54
最近发现用.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'
请问这种情况怎么解决?

由于字数原因,我无法粘贴源代码,请高手指点一二,如有需要,我可以将源码传给你,谢谢!!
最佳答案
第一个问题,那函数在一个类里吧,在的话不是静态函数不能直接调用。通过对象来调用函数。
第二个问题,参数类型不匹配,参数个数不匹配,或者没有显式指明实参类型。
全部回答
没看懂什么意思?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个工程队挖一条水渠 10挖了全长的12分之5,
文化传播公司一般经营的业务有哪些
重耳之亡秦送重耳回国与晋达成协议的内容
安沟村地址在哪,我要去那里办事
怎么辨别野核桃真假
已知石墨和金刚石燃烧的化学方程式如下C+O2=C
宏丰饭店地址有知道的么?有点事想过去
抵押借款和抵押贷款是一个概念吗
小孩上火晚上睡觉脸上会长红点吗
班依地址在哪,我要去那里办事
你用什么聊天的用韩语怎么说
好朋友都去做1040传销了,我该怎么办
企业经营观念主要内容
产品倒扣3mm,斜顶宽度加顶出距离要多少
昂立设计创意园我想知道这个在什么地方
推荐资讯
[斗鱼tv]斗鱼女主播全裸现在了观众的面 这到
下列真核细胞结构与主要组成成分,对应有误的
牙根发黑带有臭味怎么办
十千瓦的废电机能有多少斤铜
丰田威驰与日产阳光哪个好?
求问:冯唐的港版《不二》在淘宝上有价格八十
有个欧美女歌星 银发 大红唇 很性感 唱的一首
斗米乐中式快餐阜阳店地址在什么地方,想过去
患重病无人照顾的伤感诗词
科学解释,我出门只要从村边坟地经过,回家后
西安哪里有浦发银行?
【挽联格式】如何写花圈挽联怎样写花圈挽联
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?