草庐IT

MAX_NUM_IMAGES_PER_CLASS

全部标签

c++ - 继承 : expected class-name before ‘{’ token

我试图在C++中创建一个异常类,但它不起作用。我已将代码减少到最少,但仍然找不到错误。这是我的头文件:#ifndefLISTEXCEPTION_H#defineLISTEXCEPTION_H//C++standardlibraries#include/*CLASSDEFINITION*/classListException:publicexception{};#endif//LISTEXCEPTION_H这是我得到的错误:error:expectedclass-namebefore‘{’token这是出乎意料的。我该如何解决这个问题? 最佳答案

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

我无法理解这个错误。这个错误不在我正在调试的类中。(是吗?)错误是:c:\programfiles\microsoftvisualstudio10.0\vc\include\fstream(890):errorC2248:'std::basic_ios::basic_ios':cannotaccessprivatememberdeclaredinclass'std::basic_ios'1>with1>[1>_Elem=char,1>_Traits=std::char_traits1>]1>c:\programfiles\microsoftvisualstudio10.0\vc\inc

c++ - 调用子覆盖时始终调用父类(super class)虚函数

我有这样的结构:classA{public:virtualvoidfunc(inta){cout现在,在95%的情况下,当我从A继承时,我会覆盖func,在100%的情况下,我应该在执行任何其他操作之前调用A::func();?我怎样才能防止手动编写这个。有时我什至忘记在子类中调用A::func();并得到运行时错误、抛出等。 最佳答案 NVIpattern怎么样??classA{public:voidfunc(inta){cout 关于c++-调用子覆盖时始终调用父类(supercla

将实例方法作为callback in Class Initializer中的回调

考虑以下代码:classBar{letcallback:()->()init(callback:@escaping()->()){self.callback=callback}funcevent(){self.callback()}}classFoo{letbar:Barinit(){self.bar=Bar(callback:self.handler)}funchandler(){print("Handled")}}基本想法是我们想要每个Foo有一个Bar,当event()被称为Foo'bar,将会通知Foo的处理程序方法。但是,上面的设置警告Foo自初始化,因为我们正在使用self在初始化

c++ - C/C++ 中两个 INT_MAX 数字的乘积不正确

在我的例子中,两个INT_MAX数字的乘积是296447233,这是不正确的。longlongintproduct=0;product=2137483647*2137483647;printf("product:%lli\n",product);我做错了什么,如何纠正??谢谢! 最佳答案 你的两个2137483647都是int类型。所以他们保持那种类型并溢出。让它们longlong:product=2137483647LL*2137483647LL;或投:product=(longlong)2137483647*2137483647

c++ - 错误 : redefinition of class

这是我的代码://inmain.cpp#include"iostream"#include"circle.cpp"#include"rectangle.cpp"#include"shape.cpp"usingnamespacestd;intmain(){Shapeshapes[10];for(inti=0;iwidth=width;}virtualvoidsetHeigth(intheight){this->height=height;}};//inshape.cppclassShape{public:virtualintgetArea()const=0;};编译时,我得到这个错误:e

c++ - 为我的类(class)重载流运算符 << >> 的正确方法是什么?

我对如何在C++中为我的类重载流运算符感到有点困惑,因为它们似乎是流类上的函数,而不是我的类上的函数。这样做的正常方法是什么?目前,对于“getfrom”运算符,我有一个定义istream&operator>>(istream&is,Thing&thing){//etc...哪个有效。Thing类的定义中没有提到它。我希望它能够在其实现中访问我的Thing类的成员-我该怎么做? 最佳答案 您的实现没有问题。您需要执行的唯一额外步骤是在Thing中将您的运算符(operator)声明为friend:classThing{public:

c++ - 为什么 C+ +'s <vector> templated class doesn' t 打破了一个定义规则?

也许这是一个蹩脚的问题,但我不明白!如果我包括或在多个翻译单元(不同的.cpp)中,为什么它不破坏ODR?据我所知,每个.cpp的编译方式都不同,因此将为每个目标文件分别生成vector的方法代码,对吧?所以链接器应该检测到它并提示。即使它不会(我怀疑这是模板的特殊情况),当我将所有链接在一起时,它会在每个单元中使用一个代码还是不同的克隆代码集??? 最佳答案 同样,任何模板定义都不会破坏ODR—ODR特别指出,模板定义可以在翻译单元之间重复,只要它们确实是重复的(并且,因为它们是重复,不可能有冲突或歧义)。[C++14:3.2/6

C++ 风格约定 : Parameter Names within Class Declaration

我是一个相当新的C++程序员,我想听听支持和反对在类声明中命名参数的争论。这是一个例子:Student.h#ifndefSTUDENT_H_#defineSTUDENT_H_#includeusingnamespacestd;classStudent{private:stringname;unsignedintage;floatheight,GPA;public:Student(string,unsignedint,float,float);voidsetAge(unsignedint);};#endif/*STUDENT_H_*/对比#ifndefSTUDENT_H_#defineS

c++ - 与 min_element 和 max_element 一起使用 minmax_element 是否有任何效率优势?

std::minmax_element:返回一个对,该对由指向最小元素的迭代器作为第一个元素和指向最大元素的迭代器作为第二个元素组成。std::min_element:返回指向[first,last)范围内最小元素的迭代器。std::max_element:返回指向[first,last)范围内最大元素的迭代器。std::minmax_element是否使用完整列表的排序来实现此目的?从std::minmax_element处理返回对的开销是否足够? 最佳答案 您不必担心std::minmax_element进行任何排序。它以遍历的