我有一个水果类和一个从水果中继承的苹果.让我们说我有各种各样的水果.我可以说苹果,香蕉和其他水果.
问题:当我尝试从该数组的元素(水果的子)获取值时,它将无法编译.
class Fruit{
public:
Fruit();
}
class Apple : public Fruit{
public:
Apple();
int count; //number of apples in the store
}
int main(){
Fruit market[3];
market[0] = Apple();
int apples = market[0].count;
}
Run Code Online (Sandbox Code Playgroud)
我知道这是因为程序不知道它正在看苹果; 但如果我当然知道它是一个苹果(例如通过检查),我如何访问Apple.count?
所以我浪费了一个小时试图找出我的程序崩溃的原因.碰巧,我忘了把函数的返回语句放进去.
功能大致如下:
structType name(2 parameters){
.....
}
Run Code Online (Sandbox Code Playgroud)
我习惯了警告,返回语句丢失了.为什么不在这里这样做,我怎么能打开这个功能呢?
[我在C中编码]编辑:使用GCC
我反对我的指针向量问题...我知道问题可能是什么:
当我创建一个指向向量的指针时,指针会保留堆上向量的大小.所以这基本上意味着,指针现在指向向量的内存而没有任何内部......当我现在调整大小或推回向量时,指针现在仍然指向向量的整个内存或只有内存刚开始分配?
我也想知道,如果你有一些技巧可以解决这个问题(如果我认为是真的)."vector.reserve(n)"是一种实现此目的的方法吗?或者有什么我可以做的事情来覆盖指针内存地址,它被初始化后的向量?
c++ ×2
c ×1
class ×1
gcc ×1
heap ×1
inheritance ×1
memory ×1
parent-child ×1
pointers ×1
vector ×1