抽象クラス
Posted: 2010年7月24日(土) 23:08
(この記事は管理人が復元しました)
度々、申し訳ありませんが、
今度はこのプログラムをコンパイルしたら
//期末課題
#include<iostream>
#include<cstring>
using namespace std;
class AbstractIntArray{ //抽象クラス
public:
virtual int getElem(size_t index)=0;
virtual void setElem(size_t index,int value)=0;
//・・・・・
private:
//データなし
};
class IntArray:public AbstractIntArray{ //具象クラス
public:
int getElem(size_t index);
void setElem(size_t index,int value);
//・・・
private:
size_t numElems;
int *elems;
};
class SparseIntArray:public AbstractIntArray{ //具象クラス
public:
int getElem(size_t index);
void setElem(size_t index,int value);
//・・・
private:
//たぶんバイナツリーまたは何か普通では考えつかないもの
};
int sum(AbstractIntArray *a){
int s=0,i;
for(i=0;i< a ->getSize(); i++){
s+=a->getElem(i);
return s;
}
}
int main(){
::AbstractIntArray *a;
for(int i=0; i<11; i++){
a ->setElem(i,i);
}
printf(%d,sum(a));
}
getSize : AbstractIntArray のメンバではありません。
AbstractIntArray の宣言を確認してください。
が出ました。
getSizeという関数はなんらか定義しなければいけないのでしょうか?
それともそのまま使っていいのでしょうか?
教えてください。
度々、申し訳ありませんが、
今度はこのプログラムをコンパイルしたら
//期末課題
#include<iostream>
#include<cstring>
using namespace std;
class AbstractIntArray{ //抽象クラス
public:
virtual int getElem(size_t index)=0;
virtual void setElem(size_t index,int value)=0;
//・・・・・
private:
//データなし
};
class IntArray:public AbstractIntArray{ //具象クラス
public:
int getElem(size_t index);
void setElem(size_t index,int value);
//・・・
private:
size_t numElems;
int *elems;
};
class SparseIntArray:public AbstractIntArray{ //具象クラス
public:
int getElem(size_t index);
void setElem(size_t index,int value);
//・・・
private:
//たぶんバイナツリーまたは何か普通では考えつかないもの
};
int sum(AbstractIntArray *a){
int s=0,i;
for(i=0;i< a ->getSize(); i++){
s+=a->getElem(i);
return s;
}
}
int main(){
::AbstractIntArray *a;
for(int i=0; i<11; i++){
a ->setElem(i,i);
}
printf(%d,sum(a));
}
getSize : AbstractIntArray のメンバではありません。
AbstractIntArray の宣言を確認してください。
が出ました。
getSizeという関数はなんらか定義しなければいけないのでしょうか?
それともそのまま使っていいのでしょうか?
教えてください。