将代码从复制到我的代码中后,我得到了错误: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
下面是代码的格式:
class C
{
public:
C();
virtual ~C() = 0;
};
class D : public C
{
public:
D();
~D();
};
C::C(){
}
C::~C(){
}
D::D(){
}
D::~D(){
}
int main(){
C *c = new C();
D *d = new D();
return 0;
}
当我尝试实例化c时,我得到以下错误:
1>c:\main.cpp(59): error C2259: 'C' : can
我已经开始学习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;
}
我正在学习虚拟函数和抽象类,我似乎很难理解一些东西。假设我有这样的代码:
class animal {
public:
virtual void show()=0;
};
class dog : public animal {
int weight;
};
int main()
{
//animal a;
dog d;
return 0;
};
我理解动物a是如何不正确的,因为动物类是抽象的,我不允许声明这个类的对象。然而,为什么狗d也是不正确的?(考虑到类狗不是抽象的,所以我可以声明狗对象)
提前谢谢!!
我觉得我在做一些非常愚蠢的事情,但我就是不能弄清楚我的代码出了什么问题。我甚至做了一个超级简化版的代码,错误仍然发生:
#include <iostream>
using namespace std;
class c1{
public:
c1(){}
~c1(){}
virtual int add(int a, int b);
private:
protected:
};
class c2 : c1{
public:
c2(){}
~c2(){}
int add(int a, int b){
retur
当我有这样的东西时:
class A
{
virtual void rat();
};
class B : public A
{
virtual void rat() { ; } //implemented!
};
int main(int argc, char **argv)
{
A *a = new B;
delete a;
}
我收到链接器错误:
除非我把基本老鼠变成纯虚拟的。
然而,当我有这个的时候:
class A
{
public:
void rat();
};
int main(int argc, char **argv)
{
A a;
}
这段
我有三门课:B,D和G。D是B,G是D。B和D都是抽象的。B来自第三方。
B有一个非纯的虚拟方法,G需要实现这个方法(要成为一个D)。我可以吗?是否可以重新定义/重写一个虚拟函数,使其成为纯虚拟函数?
示例:
class B // from a third party
{
public:
virtual void foo();
};
class D : public B
{
public:
void foo() override = 0; // allowed by gcc 4.8.2
virtual void bar() = 0;
};
class G : public
我有一个带有纯虚函数f()的Base类。另一个类Derived是从Base派生的。我从Derived内部调用f()。使用g++时,我从链接器中得到一个错误。
[agnel@dooku tmp]$ g++ pure_virtual_function_call.cpp
/tmp/ccGQLHi4.o: In function `Derived::f()':
pure_virtual_function_call.cpp:(.text._ZN7Derived1fEv[_ZN7Derived1fEv]+0x14): undefined reference to `VirtualBase::f(
我认为值得注意的是,这在Visual Studio2012上编译得很好,但在g++中就不行了。在我实现RSA.cpp之前,它一度编译得很好。从那以后我就没碰过头文件了。错误是:
cipher.o: In function `RSA_433::RSA_433()':
/home/andrew/Desktop/ciphers/RSA.h:18 undefined reference to `vtable for RSA_433'
collect2: error: ld returned 1 exit status
以下是RSA.h:
class RSA_433: public Ci
所以,我有这个多态的层次结构:
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
你好,假设我有一个抽象类,它有几个纯抽象函数,我有几个类派生自这个类,这些类中的所有数据最终都变得相似,我想知道在抽象类中声明一个受保护的向量来收集数据是否明智,甚至是可能的。
class A
{
protected:
vector <string> str;
public:
virtual function x();
virtual function y(); //etc etc
virtual ~A(){;}
};
class B : public A
{
public:
function x();
function y();
是否有必要对虚拟函数进行定义?
请考虑下面的示例程序:
#include <iostream>
using namespace std;
class base
{
public:
void virtual virtualfunc();
};
class derived : public base
{
public:
void virtualfunc()
{
cout << "vf in derived class\n";
}
};
int main()
{
derived d;
r