【发布时间】:2018-09-17 07:36:25
【问题描述】:
我一直在编写我的代码,但似乎无法修复它的 c_str': non-standard syntax; 这个错误。使用 '&' 创建一个指向成员的指针,我不确定我做错了什么。
HSAMPLE sample = BASS_SampleLoad(FALSE, fi.Recv_Song().c_str, 0, 0, 1, BASS_SAMPLE_MONO);
我从 fi.Recv_song.c_str 变量中得到错误,它假设是文件位置的字符串,因此它的函数可以从该位置播放 mp3 文件。附言。 recv 函数是我在头文件中创建的。
string &Get_Song()
{
cin >> song; //this is the header file it is in.
mpc = path + song;
return mpc;
}
string Recv_Song()
{
return mpc;
}
【问题讨论】:
-
c_str是一个函数,而不是一个变量。投票结束为错字。 -
这是导致错误的原因,似乎是给出的错误代码
-
是的,这就是导致错误的原因。您需要调用该函数,就像使用
Recv_Song一样。 -
只是想知道 - 你为什么要通过引用返回字符串 (mpc) 一次,然后按值返回?如果您通过引用返回,请考虑返回 const 引用 - 否则,用户可能会以不适合实现的方式修改字符串...
-
糟糕的错误信息 - 编译器应该考虑在提出建议之前同时添加
()和 `&``。几乎可以肯定,两者中只有一个使代码编译。