找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
Member object not found: no member named get_event(), Also dealing with polymorphism and vectors
我的代码有问题:
void room_encounter_randomizer(vector<vector<room> > *grid, int row, int col){//allocates events to the rooms.
wumpus w1;
int row_rand = rand() % row;
int col_rand = rand() % col;
for(int i =0 ; i < 4; i++){
for(int j = 0; j < row; j++){
for(int k = 0; k < col; k++){
grid[i][j].get_event() = &w1;
}
}
}
}
它应该将事件随机分配给每个房间。以下是我的课程:
class event{//abstract class
public:
virtual void percept() = 0;
virtual void encounter() = 0;
};
class room{
private:
event* ev;
public:
event* get_event();
};
event *room::get_event(){
return ev;
}
class wumpus:public event{
public:
void percept();
void encounter();
};
void wumpus::percept(){
//if player is within a tile
cout << "You smell a terrible stench..." << endl;
}
void wumpus::encounter(){
cout << "The Wumpus eats you" << endl;
exit(0);
}
void create_grid(){
}
但我得到了这个错误:
vectortest.cpp: In function ‘void room_encounter_randomizer(std::vector<std::vector<room> >*, int, int)’:
vectortest.cpp:78:16: error: ‘__gnu_cxx::__alloc_traits<std::allocator<std::vector<room> > >::value_type’ has no member named ‘get_event’
grid[i][j].get_event() = &w1;
我真的不知道该怎么想。既然我把所有的代码都放在一个文件里,那么这个函数是公共的,难道不应该被识别吗?
此外,我真的不知道如何处理抽象类,我想我会尝试将房间对象事件指针设置为等于wumpus
引用。
使用
void room_encounter_randomizer(vector<vector<room> > &grid, int row, int col)
并且传递CCD_ 2作为引用而不是作为指针。
TL;DR版本
vector<vector<room> > *grid
是指向vector
s的vector
的指针。由于指针可以像数组一样进行索引(p[i]
由C++标准定义为与*(p+i)
相同(,
grid[i] // is a vector<vector<int>>
grid[i][j] // is a vector<int>
grid[i][j][k] // is an int
grid
处的对象很可能是vectors
中的一个vector
,这在运行时将是致命的。
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- C++交换来自同一类成员的参数值,处理多个类
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 处理类内的回调时,必须调用对非静态成员函数的引用
- C++预处理会生成变量成员、资源库和映射
- 如何处理运算符=中的常量成员?
- 多线程处理中的静态成员变量
- 类成员作为 C++ 中 C 样式事件的事件处理程序
- 如何处理具有不同类的成员函数的函数查找表?
- 在字符串类上的成员函数和out_of_range异常处理
- 如何处理算法中具有不同名称成员函数的类?
- C++执行期间的类成员函数错误/异常处理
- 在类声明中处理指向成员函数的指针
- 同时处理非成员函数指针和成员函数指针
- 如何在 Arduino 中使用 C++ 成员函数作为中断处理程序?
- 为什么调用单例类 Qt 消息处理程序成员函数会出现错误:缺少参数列表
- 我应该如何处理:错误 C2039 "分配":不是 Visual Studio 2017 中"cl::string"的成员?
- 在多个继承的情况下,C 编译器如何处理成员变量内存偏移
- ASYNC_WAIT处理程序班级成员具有取消处理
- 将抽象基类作为成员处理时的所有权问题