是否可以从C++中的超级变量中更改派生类的变量?
(举个例子可能会让我的问题更清楚。)
假设我有以下类和函数:
class SuperClass // super class
{
int myClassVariable;
public:
virtual void modify()
{
myClassVariable = 10;
}
};
class DerivedClass : public SuperClass // derived class
{
我为box2d编写了一个python包装器,一切工作正常,但是当调用由boost python公开的方法函数时,有时会出现奇怪的TypeError错误。这是一种随机行为,并不是每次都会发生。
有问题的python代码:
try:
world = body.GetWorld() # world is b2World instance, body is b2Body instance
world.DestroyBody(body) # raise TypeError: 'NoneType' object is not callable
except TypeEr
我有一个方法(或函数),它返回对多态对象列表的引用:
class A {
};
class B : public A {
};
std::list<boost::shared_ptr<A> >& getList();
如何在boost::python中公开这样的函数,以便在python中迭代列表时,可以看到不同类型的A和B?
我有以下类:
(表头)
struct udtMapping
{
int ByteStart;
int ByteCount;
int iHPUnitID;
};
class clsMapping : public CBaseStructure
{
private:
vector<udtMapping> m_content;
protected:
public:
vector<udtMapping> &Content();
void Add(int i1, int i2, int int3);
};
cpp文件:
将代码从复制到我的代码中后,我得到了错误:note: because the following virtual functions are pure within 'TEA':和XTEA,但只有这两个函数。其他函数,AES,BLOWFISH,CAMELLIA,RC4,RC5,RC6等都可以正常工作。就是这两个函数出错了。我不明白为什么。
来自链接的代码(稍作修改):
class CryptoAlgorithm
{
public:
virtual std::string encrypt(std::string DATA) = 0;
virtua
假设我没有使用多重继承或虚拟继承,C++标准是否保证如果我将Derived*转换为Base*,两个指针将具有完全相同的值?例如,即使Derived和/或Base具有虚函数,以下代码是否始终调用success()?
Derived* d = new Derived;
Base* b = d;
if (((void*)b) == ((void*)d))
success();
else
failure();
所以,我有这个多态的层次结构:
ClassA
Is not abstract, no pure virtual functions, but a few virtual functions
ClassB:public ClassA
Defines an extended interface for a certain type of subclass;
is abstract with pure virtual functions
ClassC:public ClassB
Usable class, no more subclassing
事情是这样的,我将把ClassA和ClassC
我想使用C++11 override说明符,并注意到它可以与virtual一起使用。这有什么不同吗?考虑以下类:
class Base
{
virtual void fct() = 0;
};
class Derived1 : public Base
{
void fct() override {}
};
class Derived2 : public Base
{
virtual void fct() override {}
};
Derived1和Derived2在技术上有区别吗?
我已经开始学习C++了,我已经知道C和Java了。我已经开始学习它,因为我想开始使用面向对象编程。
然而,我被代码卡住了,因为编译器生成了“对Actor的vtable的未定义的引用”。在这里,你有生成相同错误的代码,而不是原始的错误,因为它不太清楚。我真的不知道是什么原因造成的。
struct Actor
{
int x, y;
virtual void move();
};
struct Player : Actor
{
Player(int a, int b)
{
x = a;
y = b;
}
在一些书中,声明或继承虚函数的类被称为多态类。
类B没有任何虚函数,但通过了多个is-a测试。
类C有一个虚函数,但没有继承。
class A {};
class B : public A {};
class C
{
public:
virtual void f () {}
};
B类或C类是多态的吗?
我是C++编程的新手,我对包含虚拟成员函数的类的大小有疑问。请看一下我的以下代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
class BaseClass
{
private:
int a, b;
public:
BaseClass()
{
a = 10;
b = 20;
}
virtual int area()
{
return 0;
}
};
class DerivedCl