我已经开始学习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;
}
我在C++中使用虚函数有一个小问题
我有一个B类,它扩展了A类。
Class A{
virtual function 1 // does nothing
virtual function 2 // does nothing
}
class B : public class A {
function 1 { does some thing }
function 2 { does some thing }
}
我有另一个类实现
class implement {
B b;
A *a = &B;
a.function 1();
a.function 2(
你好,假设我有一个抽象类,它有几个纯抽象函数,我有几个类派生自这个类,这些类中的所有数据最终都变得相似,我想知道在抽象类中声明一个受保护的向量来收集数据是否明智,甚至是可能的。
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();
我最近刚刚学习了Java中类继承的正确应用,并打算将其应用到我正在用C++编写的一些代码中。
以下是空Node.cpp的标头:
#ifndef Node_h
#define Node_h
#include <string>
using namespace std;
///////////////////////////////////////////////////////
//Class Declarations
class Array;
class Hash;
class Node;
class BodyNode;
class RealNode;
将代码从复制到我的代码中后,我得到了错误: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
我有一个带有纯虚函数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(
所以,我有这个多态的层次结构:
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
我有以下类:
(表头)
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文件:
任何帮助都是有价值的。我正在处理一个C++工厂模式,我得到了这个错误。
1>c:\users\brian\documents\visual studio 2010\projects\cst276lab_3\guitar.hpp(456):错误C2259:'ElectricGuitarComponentFactory‘:无法实例化抽象类
这是我的代码:
///////////////////////guitar class////////////////////
class Guitar
{
private: std::string _name;
p
我想在C++中创建一个类,其他类从它继承而来。但我希望确保没有人能够从这个类创建一个实例。
含义:
class Animal{
public:
virtual ~Animal() {}
};
class Fish: public Animal{
};
我想要确保:
Fish* fish = new Fish();
是有可能的,但是
Animal* ana = new Animal();
不会的。
我该怎么做呢?
伙计们!我正在尝试使用断言进行一些测试,并且我想创建一个InMemoryRepository,但是我收到了一个错误。这就是我想要做的:
void TestCaseMedicineInMemoryRepository::setUp(){
this->medRepo = new MedicineInMemoryRepository(); //error
}
错误:
Multiple markers at this line
- The type 'MedicineInMemoryRepository' must implement the inherited
我正在开发一个C++类,它为网络提供了BSD套接字的抽象。我想定义一个由CSocket和MockSocket (后者用于单元测试)实现的接口ISocket。我知道我需要将我希望实现类提供的方法定义为纯虚的。
class ISocket {
public:
virtual int Socket(int domain, int type, int protocol) = 0;
};
我担心的是ISocket类型的类是否可以实例化。我的直觉告诉我,任何至少有一个纯虚方法的类都是抽象类(即接口),不能被实例化,但是我有一个小小的担忧,那就是我需要对C++编译器将提供的自动生成的构造函数和析构函数做