因此,由于这个错误,我已经在网上阅读了很多东西,但是由于某种原因,即使尝试了建议的操作,我仍然可以得到它。如果有人可以帮助我理解这一点并指出问题所在,那真是太棒了。

char * s = strtok(text, ",");
string name = s;
printf("%s", name);

最佳答案

给定示例代码,您得到的错误是您无法将非POD对象传递给椭圆。这是因为您试图将非POD类型传递给可变参数函数,该函数采用可变数量的参数。在这种情况下,通过调用printf声明如下

int printf ( const char * format, ... );


用作最后一个参数的省略号使您可以像在代码中一样将0或多个其他参数传递给该函数。 C ++标准确实允许您传递非POD类型,但是不需要编译器来支持它。该标准的5.2.2 / 7部分覆盖了这一点。


  通过实现定义的语义有条件地支持传递具有非平凡的副本构造函数,非平凡的移动构造函数或非平凡的析构函数且没有相应参数的类类型的可能求值的参数。


这意味着每个编译器制造商都可以决定是否要支持它以及它的行为方式。显然,您的编译器不支持此功能,即使这样做,我也不建议您使用它。

关于c++ - 非POD对象错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23773374/

10-12 23:51