给定 A 类和 B 类。我需要使用 cpp 文件中所示的“add”函数将 B 类的对象引用存储在 A 类的对象数组中。
我应该能够使用 cpp 文件中所示的“->”来调用 B 类的“打印”函数。
编译时错误:void* 不是指向对象的指针类型
那么我该如何解决这个错误呢?
==================================================== =================================
// 头文件
// ABC.h
class A{
private:
size_t size_;
void * a_[256];
static int index_;
public:
void add(void * obj);
void * operator[](int x){
return a_[x];
}
};
class B {
private:
const char * f_;
const char * l_;
public:
B(const char * fn, const char * loc ):f_(fn), l_(loc){ A(); };
void print();
};
// cpp文件
#include "ABC.h"
int A::index_ = 0;
inline void A::add(void* obj){
void * insertionPoint = static_cast<char *>(a_[index_]) + ( size_ * index_ );
memcpy( insertionPoint, obj, size_);
++index_;
}
inline void B::print(){
...
}
int main()
{
A a;
B b( "Name", "Some string");
a.add( &b );
a[0]->print(); // <-- This should be an object reference to B, but it is producing the error.
return 0;
}
输出:
命名一些字符串