我试图获取当前日期并将其存储在String中,但是当我尝试从char数组保存到String时,我收到以下错误;
Error: Call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type in [file].
然而,据我所知,根据C ++参考资料,我仍然难以理解为什么它不起作用,因为函数应该按照使用的方式工作。代码如下。
#include <string>
...
std::string dummyString;
time_t tempTime;
struct tm * timeInfo;
char buffer [40];
tempTime = recordInstance->getTime();
timeInfo = localtime (&tempTime);
strftime (buffer, 80,"%d/%b/%Y",timeInfo);
dummyString(buffer); //Error returned on this line.
答案 0 :(得分:2)
你显然打算写
dummyString=buffer;
而不是显示代码中的最后一行。
答案 1 :(得分:2)
在再次查看你的问题后,我应该提及其他一些内容,因为它可能与此相关。构造函数是特殊的未命名成员函数,不能像其他函数一样直接调用。它们仅在首次构造对象时调用,并且不能再次调用。如果这是你的意图,你现在可以更好地了解为什么它不会起作用。
<小时/> 您得到的错误是因为您的代码试图调用dummyString
,就像它是一个函数一样。尽管C ++ 支持执行此操作的能力,但string
的定义却没有(没有理由 - 它不是函数类型对象)。根据您的帖子,看起来您正在尝试在定义dummyString
之后构建它。将变量定义为尽可能接近首次使用,这绝对被认为是一种很好的做法,但这不是如何做到的。
定义变量时,它会以某种方式初始化。在这种情况下,以下语句会导致std::string
上的dummyString
的默认构造函数被调用。
std::string dummyString;
您要做的是使用字符缓冲区的内容构造dummyString
。为此,您需要在实例化时将字符串作为参数传递,在本例中是定义变量的时间。
std::string dummyString(buffer);
这将使用缓冲区的内容构造字符串。
答案 2 :(得分:0)
问题可能是语法:
dummyString(Char *)是一个构造函数 - 但看起来你已经在某处声明了dummyString?
尝试将dummyString声明为...... string dummyString(buffer);
或者如果必须已经声明,请尝试...
dummyString = buffer;
答案 3 :(得分:0)
你打算做什么
dummyString = std::string(buffer);
或
dummyString = buffer;
因为您使用的语法仅在声明时允许
std::string dummyString(buffer);