【发布时间】:2014-03-09 11:53:58
【问题描述】:
我想创建一个对象向量,它很可能是从基类派生的,它可能有也可能没有自己的个人非派生函数。到目前为止,我无法调用这些函数,因为它们不是向量声明中使用的类的一部分。
如何让这成为可能?
下面的代码给出了错误:
../src/ObjectVectors.cpp:22:33: 错误:“BaseObject”中没有名为“getInt”的成员
//============================================================================
// Name : ObjectVectors.cpp
// Author : Edwin Rietmeijer
// Version :
// Copyright : This code is owned by Edwin Rietmeijer as of 2014
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <vector>
#include "BaseObject.h"
#include "SubObjA.h"
using namespace std;
int main() {
vector<BaseObject *> objectVector;
objectVector.push_back( new SubObjA );
cout << objectVector.front() -> getInt() << endl;
// for ( pos = objectVector.begin(); pos != objectVector.end(); ++pos )
// cout << pos -> get() << endl;
}
/*
* BaseObject.h
*
* Created on: Feb 11, 2014
* Author: edwinrietmeijer
*/
#ifndef BASEOBJECT_H_
#define BASEOBJECT_H_
class BaseObject {
public:
BaseObject();
int get();
virtual ~BaseObject();
};
#endif /* BASEOBJECT_H_ */
/*
* BaseObject.cpp
*
* Created on: Feb 11, 2014
* Author: edwinrietmeijer
*/
#include "BaseObject.h"
BaseObject::BaseObject() {
// TODO Auto-generated constructor stub
}
int BaseObject::get(){
return 0;
}
BaseObject::~BaseObject() {
// TODO Auto-generated destructor stub
}
/*
* SubObjA.h
*
* Created on: Feb 11, 2014
* Author: edwinrietmeijer
*/
#ifndef SUBOBJA_H_
#define SUBOBJA_H_
#include "BaseObject.h"
class SubObjA : public BaseObject {
int data = 88;
public:
SubObjA();
int getInt();
virtual ~SubObjA();
};
#endif /* SUBOBJA_H_ */
/*
* SubObjA.cpp
*
* Created on: Feb 11, 2014
* Author: edwinrietmeijer
*/
#include "SubObjA.h"
SubObjA::SubObjA() {
// TODO Auto-generated constructor stub
}
int SubObjA::getInt() {
return data;
}
SubObjA::~SubObjA() {
// TODO Auto-generated destructor stub
}
【问题讨论】:
-
当对象为
BaseObject类型时,您期望getInt()返回什么?
标签: c++ object derived-class