草庐IT

Derived_A

全部标签

C++ 方法重载 : base and derived parameters

在网上搜索后,我没有设法找到这个问题的答案:我有这个重载方法:foo(Base*base);foo(Derived*derived);在这种情况下,“Derived”是“Base”的子类。当我打电话时:foo(newDerived());我注意到总是调用第一个重载方法,而我想获得相反的结果(调用以“Derived*”对象作为参数的方法)。如何解决?谢谢。编辑:好的,这是我的实际情况:我有一个UIWidget和一个UIScoreLabel类。UIScoreLabel派生自UIWidget。我还有一个GameEvent类(Base)和一个P1ScoreGameEvent类(Derived)

c++ - 为什么friend类可以通过Derived类访问到Base类私有(private)数据

这是我第一次在这里发帖。classBase{private:intbase;friendclassQuestion;};classDerived:publicBase{private:intsuper;};classQuestion{public:voidtest(Base&base,Derived&derived){intvalue1=base.base;//Noproblem,becauseQuestionisafriendclassofbaseintvalue2=derived.super;//Compileerror,becauseQuestionisnotafriendcla

ios - 为什么清除 Derived Data 会清除 Xcode 中的各种错误?

通常,人们在xcode中遇到各种问题或构建错误,并被告知清除派生数据以解决他们的特定问题。什么是派生数据,删除它可以解决各种问题?派生数据中都包含什么? 最佳答案 Xcode在该文件夹中缓存了大量数据,包括应用程序的Assets(图像、音频)、编译代码/库等。Xcode这样做是为了加快构建/运行/调试周期,允许您在几秒钟内进行小的更改和重建/测试,如果它每次都必须重建每一个东西,则只需几分钟。但是,在某些情况下,您所做的更改不会被Xcode检测到,因此不会合并到您的下一次构建/运行中。这是当您遇到奇怪的问题时,有些问题很明显,例如未

c++ - 英特尔 C++ 编译器 (icpc 14.0) : "a derived class is not allowed here"

我在Linux上使用ICC14.0.2。此代码片段使用GCC和CLang编译,但不使用ICC:templatestructA;templatestructA{templatestructNested{};};templatestructA:publicA{};templatestructA::Nested;//explicitinstantiation尝试用三个编译器编译:$g++-c-std=c++11testcase.cc$clang++-c-std=c++11testcase.cc$icpc-c-std=c++11testcase.cctestcase.cc(17):error:

C++:我可以在函数调用期间将 vector <derived_class> 转换为 vector <base_class> 吗?

我有一个现有的类和函数,如下所示:Classbase_class{...}voidFunc(...,vector&vec_b,...){//insidethefunction,thevectorvec_bisbeingre-organizedandre-sized}我定义了一个派生类,如下所示:Classderived_class:publicbase_class{...}现在,不改变函数Func,我可以传递一个vector吗?进入Func,例如:voidmain(){vectord;Func(...,d,...);}派生类d经历同样的重组和重新调整规模?我知道我可以在函数调用中毫无问

C++ 访客模式 : Why should every derived visited implement Accept()?

我看过几个演示访问者模式的示例。在所有这些元素中,每个派生的访问元素都实现通常称为Accept()方法的方法。在颜色层次结构中,此方法可能如下所示:voidRed::accept(Visitor*v){v->visit(*this);}voidBlue::accept(Visitor*v){v->visit(*this);}当Visitor及其继承者具有以下方法时:visit(Redred);visit(Blueblue)我的问题是为什么不只在基类中以相同的方式实现它(在这个例子中:Color)多态性将完成这项工作,即正确的访问将被调用,因为什么时候对象是Redthis的动态类型是Re

c++ - 从 Derived* 到 void* 到 Base* 的 static_cast

我想将指向派生类成员的指针转换为void*,然后从那里转换为基类的指针,如下例所示:#includeclassBase{public:voidfunction1(){std::cout(&d);Base*baseptr=static_cast(ptr);baseptr->function1();baseptr->function2();}这会编译并给出所需的结果(分别打印1和2),但它能保证工作吗?我在这里找到的static_cast的描述:http://en.cppreference.com/w/cpp/language/static_cast只提到转换为void*并返回到指向相同类

c++ - 为什么 sizeof Derived Class 是 8?

#includeusingnamespacestd;classEmpty{};classDerived:virtualpublicEmpty{charc;};intmain(){cout为什么size要来8我觉得应该是9,如果我将“c”声明为整数,那么它也将是8你能给我解释一下逻辑吗 最佳答案 大小依赖于实现,它取决于特定编译器实现如何实现虚拟化和填充。你不应该期望这个值是特定的东西。如果您想在程序中计算大小,只需使用sizeof即可。 关于c++-为什么sizeofDerivedCla

C++ 模板 : 'is not derived from type'

为什么这个代码无效?#includetemplateclassA{public:A(){v.clear();}std::vector*>::const_iteratorbegin(){returnv.begin();}private:std::vector*>v;};GCC报告以下错误:test.cpp:8:error:type'std::vector*,std::allocator*>>'isnotderivedfromtype'A'test.cpp:8:error:expected';'before'begin'test.cpp:12:error:expected`;'before

c++: vector<Base> 可以包含 Derived 类型的对象吗?

标题几乎说明了一切。基本上,这样做是否合法:classBase{//stuff}classDerived:publicBase{//morestuff}vectorfoo;Derivedbar;foo.push_back(bar);根据我看过的其他帖子,下面是可以的,但我不想在这种情况下使用指针,因为很难使其线程安全。vectorfoo;Derived*bar=newDerived;foo.push_back(bar); 最佳答案 不,Derived对象将是sliced:所有额外的成员都将被丢弃。使用std::vector>而不是原