草庐IT

Constants

全部标签

c++ - 常量不匹配 : 2 overloads have no legal conversion for 'this' pointer

我收到了这个奇怪的错误:errorC2663:'sf::Drawable::SetPosition':2overloadshavenolegalconversionfor'this'pointer我认为这与const不匹配有关,但我不知道在哪里,或者为什么。在下面的代码中,我有一个形状和Sprite的vector,当尝试访问其中一个vector形状并调用它的一个函数时,我遇到了错误。std::vectorShapes;std::vectorSprites;boolAddShape(sf::Shape&S){Shapes.push_back(S);returntrue;};boolAdd

c++ - 常量不匹配 : 2 overloads have no legal conversion for 'this' pointer

我收到了这个奇怪的错误:errorC2663:'sf::Drawable::SetPosition':2overloadshavenolegalconversionfor'this'pointer我认为这与const不匹配有关,但我不知道在哪里,或者为什么。在下面的代码中,我有一个形状和Sprite的vector,当尝试访问其中一个vector形状并调用它的一个函数时,我遇到了错误。std::vectorShapes;std::vectorSprites;boolAddShape(sf::Shape&S){Shapes.push_back(S);returntrue;};boolAdd

c++ - 如何将 "pointer to pointer type"转换为 const?

用下面的代码voidTestF(constdouble**testv){;}voidcallTest(){double**test;TestF(test);}我明白了:'TestF':cannotconvertparameter1from'double**'to'constdouble**'我不明白为什么。为什么test不能被无声地转换为constdouble**?我为什么要明确地这样做?我知道TestF(const_cast(test))使我的代码正确,但我觉得这应该是不必要的。我缺少一些关于const的关键概念吗? 最佳答案 该

c++ - 如何将 "pointer to pointer type"转换为 const?

用下面的代码voidTestF(constdouble**testv){;}voidcallTest(){double**test;TestF(test);}我明白了:'TestF':cannotconvertparameter1from'double**'to'constdouble**'我不明白为什么。为什么test不能被无声地转换为constdouble**?我为什么要明确地这样做?我知道TestF(const_cast(test))使我的代码正确,但我觉得这应该是不必要的。我缺少一些关于const的关键概念吗? 最佳答案 该

c++ - 您将如何使用 C++11 初始化函数结果的 const vector ?

是否可以使用generate_n之类的东西来创建一个由随机数组成的constvector?如果不派生vector并在构造函数中进行赋值,我想不出办法。 最佳答案 如果您愿意,可以使用静态助手或lambda;正如评论中指出的那样,移动语义/复制省略将使这非常便宜,因为所有体面的编译器都会省略助手返回的vector的完整拷贝。相反,他们只会创建代码来填充单个vector,然后使用该vector。std::vectorHelper(){constsize_tn=10;std::vectorx(n);std::generate_n(x.be

c++ - 您将如何使用 C++11 初始化函数结果的 const vector ?

是否可以使用generate_n之类的东西来创建一个由随机数组成的constvector?如果不派生vector并在构造函数中进行赋值,我想不出办法。 最佳答案 如果您愿意,可以使用静态助手或lambda;正如评论中指出的那样,移动语义/复制省略将使这非常便宜,因为所有体面的编译器都会省略助手返回的vector的完整拷贝。相反,他们只会创建代码来填充单个vector,然后使用该vector。std::vectorHelper(){constsize_tn=10;std::vectorx(n);std::generate_n(x.be

c++ - "const T*"可以匹配指向自由函数的指针吗?

在relatedquestion中,据说没有指向非成员const函数的指针。另外,C++118.3.5/6说Theeffectofacv-qualifier-seqinafunctiondeclaratorisnotthesameasaddingcv-qualificationontopofthefunctiontype.Inthelattercase,thecv-qualifiersareignored.[Note:afunctiontypethathasacv-qualifier-seqisnotacv-qualifiedtype;therearenocv-qualifiedfun

c++ - "const T*"可以匹配指向自由函数的指针吗?

在relatedquestion中,据说没有指向非成员const函数的指针。另外,C++118.3.5/6说Theeffectofacv-qualifier-seqinafunctiondeclaratorisnotthesameasaddingcv-qualificationontopofthefunctiontype.Inthelattercase,thecv-qualifiersareignored.[Note:afunctiontypethathasacv-qualifier-seqisnotacv-qualifiedtype;therearenocv-qualifiedfun

c++ - 为什么Visual C++在C中而不是从C++中警告从const void **到void *的隐式强制转换?

概要当C程序试图将指向const数据的指针(如constvoid**或constchar**)转换为void*时,MicrosoftVisualStudio中的C/C++编译器会给出警告C4090(即使这种类型实际上并非指向const的指针)。更奇怪的是,同一个编译器静默地接受作为C++编译的相同代码。这种不一致的原因是什么?为什么VisualStudio(与其他编译器不同)在将指向const的指针隐式转换为void*时存在问题?细节我有一个C程序,其中将通过变量参数列表传递的C字符串读入数组(通过调用va_arg的循环)。由于C字符串的类型为constchar*,因此跟踪它们的数组的

c++ - 为什么Visual C++在C中而不是从C++中警告从const void **到void *的隐式强制转换?

概要当C程序试图将指向const数据的指针(如constvoid**或constchar**)转换为void*时,MicrosoftVisualStudio中的C/C++编译器会给出警告C4090(即使这种类型实际上并非指向const的指针)。更奇怪的是,同一个编译器静默地接受作为C++编译的相同代码。这种不一致的原因是什么?为什么VisualStudio(与其他编译器不同)在将指向const的指针隐式转换为void*时存在问题?细节我有一个C程序,其中将通过变量参数列表传递的C字符串读入数组(通过调用va_arg的循环)。由于C字符串的类型为constchar*,因此跟踪它们的数组的