草庐IT

static_constructor

全部标签

c++ - 将 C 数组分配给 C+ +'s std::array? (std::array<T,U> = T[U]) - no suitable constructor exists from "T [U ]"to "std::array<T,U>"

我正在尝试将C数组分配给C++std::array。我该如何做到这一点,最干净的方式并且不制作不需要的拷贝等?什么时候做intX[8];std::arrayY=X;我得到一个编译器错误:“不存在合适的构造函数”。 最佳答案 没有从普通数组到std::array的转换,但是您可以将元素从一个复制到另一个:std::copy(std::begin(X),std::end(X),std::begin(Y));这是一个工作示例:#include#include#include//std::copyintmain(){intX[8]={0,1

C++ "No matching constructor for initialization of"编译器错误

我有一个类,我尝试初始化但收到错误“没有匹配的构造函数用于初始化'TextureCoordinates'”;我正在尝试初始化的类:classTextureCoordinates{public:TextureCoordinates(){};TextureCoordinates(Point2D&origin,Dimensions2D&dim);Point2DgetOrigin()const{returnorigin;};Dimensions2DgetDim()const{returndim;};private:Point2Dorigin;Dimensions2Ddim;};编译器错误:Te

c++ - 错误 : expected constructor, 析构函数,或 ';' token 之前的类型转换?

我正在尝试编译我的代码以测试读取和打印数据文件的函数,但我得到一个我不理解的编译错误-“错误:预期的构造函数、析构函数或类型转换之前';'token”。相关代码文本墙如下。structDay{intDayNum;intTempMax;intTempMin;doublePrecip;intTempRange;};structMonth{DayDays[31];intMonthMaxTemp;intMonthMinTemp;doubleTotalPrecip;intMonthMaxTempRange;intMonthMinTempRange;doubleAverageMaxTemp;dou

c++ - MSVC++ : template's static_assert is not triggered inside a lambda

更新2:这已在VS2019Preview16.1Preview1中得到修复。更新:我已在visualstudio.com提交错误报告.所以我开始研究C++的模板,当我试图阻止使用static_assert编译模板类时遇到了这个问题。基本上,static_assert错误在VS2017上使用C++语言标准:ISOC++17标准(/std:c++17)。我也在gcc-7上使用-std=c++17进行了尝试,并触发了错误。这是VS2017上的错误还是我遗漏了什么?代码示例:#include#include#includetemplateclassIntegralContainer{stati

C++ 编译器错误 : "return type specification for constructor invalid"

这是我的代码。编译所有文件时出现此错误,我不确定自己做错了什么。请指教。Molecule.cpp:7:34:error:returntypespecificationforconstructorinvalid//SunnyPathak//Molecule.cpp#include#include"Molecule.h"usingnamespacestd;inlinevoidMolecule::Molecule(){intcount;count=0;}//endfunctionboolMolecule::read(){cout 最佳答案

c++ - 为什么 static_cast(*this) 到基类会创建一个临时拷贝?

我正在阅读EffectiveC++并遇到了这个例子:classWindow{//baseclasspublic:virtualvoidonResize(){...}//baseonResizeimpl...};classSpecialWindow:publicWindow{//derivedclasspublic:virtualvoidonResize(){//derivedonResizeimpl;static_cast(*this).onResize();//cast*thistoWindow,//thencallitsonResize;//thisdoesn'twork!.../

c++ - static_cast<int>(foo) 与 (int)foo

有人能详细说明一下区别吗? 最佳答案 不同之处在于(int)foo可以表示六种不同的东西。它可能是一个static_cast(在静态已知类型之间转换),它可能是一个const_cast(添加或删除const-ness),或者它可能是一个reinterpret_cast(在指针类型之间转换)编译器会尝试每一个,直到找到一个可以工作的。这意味着它可能不会总是选择您期望的那个,因此它可能会成为一个微妙的错误来源。此外,static_cast更容易搜索或进行搜索/替换。 关于c++-static

C++ static_cast 运行时开销

请看下面的代码。a)在这种情况下(简单继承,没有虚拟成员),B::df()中的静态转换是否有任何开销(无论如何)?我发现了一些类似问题的相互矛盾的答案,这就是我问的原因......b)我正在考虑将A中的constM1*func设为私有(private),并在B中引入一个新的私有(private)字段constM2*func以避免强制转换,但它有点使事情复杂化并使智能指针的使用更加困难。你有没有更好的方法来避免Actor阵容?classM1{public:doublef()const;};classM2:publicM1{public:doubledf()const;};classA{p

c++ - 命名空间 -`static` 在 C++11 中是否仍被弃用?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Deprecationofthestatickeyword…nomore?在C++2003中,不推荐使用命名空间-static:[C++03:7.3.1.1/2]:Theuseofthestatickeywordisdeprecatedwhendeclaringobjectsinanamespacescope(seeannexD);theunnamed-namespaceprovidesasuperioralternative.我在C++2011中找不到任何此类子句存在的位置(建议弃用),并且7.1.1似乎并

c++ - 为什么 typedef 不能与 static 一起使用?

为什么typedef不能和static一起使用?比如下面的代码就是一个错误typedefstaticintINT2;使用typedef应该遵循哪些其他规则?还有哪些关键字不能与typedef一起使用?非常感谢! 最佳答案 typedef不声明变量的instance,它声明了一个类型(实际上是类型别名),static是您应用于实例而非类型的限定符,因此您可以在使用类型时使用static,但在定义类型时不能使用。像这样..typedefintint32;staticint32foo; 关于c