クラス A とクラス B を指定します。cpp ファイルに示されているように、「add」関数を使用して、クラス B のオブジェクト参照をクラス A のオブジェクト配列に格納する必要があります。
クラス B の「print」関数を呼び出すには、cpp ファイルに示されているように「->」を使用できるはずです。
コンパイル時エラー: 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;
}
出力:
名前 何らかの文字列