に私はC++を使用して新しいプロジェクトを開発しています:仮想クラスや継承C++
ファイルをA.cpp
#ifndef A_hpp
#define A_hpp
class A{
public:
A(int at, int bt);
~A();
virtual double b()=0;
virtual double c()=0;
virtual double g()=0;
private:
int at;
int bt;
};
#endif /* A_hpp */
ファイルA.cpp
#include "A.hpp"
A::A(int at, int bt){
this->at=at;
this->bt=bt;
}
A::~A(){
//no code
}
ファイルB.hpp
#ifndef B_hpp
#define B_hpp
#include "A.hpp"
class B:public A{
public:
B(int at, int bt, double val);
~B();
private:
double *elems;
};
#endif /* B_hpp */
ファイルB.cpp
#include "B.hpp"
#include "A.hpp"
B::B(int at, int bt, double val):A(at, bt){
elems=new double[at*bt];
for(int i=0;i<at*bt;i++)
*(elems+i)=val;
}
B::~B(){
delete []elems;
}
double A::c(){
return *elem;
}
double A::b(){
return (*elem)-*(elem+1);
}
double A::g(){
return (*elem)*(*elem)*(*elem);
}
I取得エラー、Iは、これらの仮想関数b()、C()らGを実装宣言されていない識別子 'ELEM'の使用()クラスBで
コピー&ペーストしてくださいエラーメッセージを表示する代わりに、それを言い換えます。編集:インデントとスペースの欠如はあなたのコード**を非常に**読みにくいものにしました。 'A'クラス(' double A :: b() ')に対して' a'、 'b'、' c'関数を実装しています。 'A'クラスは' elems'について何も知りません。 'B'クラス(' double B :: b() ')のためにそれらを実装したいですか? –
インデントしてください! –
Aのメンバー関数 'b、c、g'を' B.cpp'のソースに定義するのはなぜですか? – Raindrop7