我有OOP類的一些概念的問題,可以說,我有以下類:概念
- 分析器類,其包括數據用於解析一個流數據
- String類,其包括串爲解析流數據業務
- Integer類,其中包括用於分析數據流
所以字符串和Integer類繼承Parser類,因爲它們都需要整數運算有關流的具體信息,如位置,長度等。
現在的問題出現在我有一個同時使用String和Integer函數的函數。
讓我們把這個新函數放在一個名爲MultipleOperations的類中。 MultipleOperations需要String和Integer類,因此它繼承了String和Integer類,它們已經繼承了Parser,所以當試圖從Parser類訪問某些數據時是不明確的。
另一方面,如果設置字符串和Integer類具有MultipleOperations組成,那麼我不會有權訪問Parser類。
另外我不明白「有一個」的概念,因爲在大多數情況下,我需要引用基類的數據,所以這使得它是一個「是」。
這裏是我的問題的一個例子:
class Parser{
private:
int errorcode;
char comment;
const char* address;
const char* maxaddress;
unsigned int position;
public:
Parser(const char* _address, const char* _maxaddress) : errorcode(NO_ERROR_PRESENT) {};
const char* s_address(const char* _address) {address = _address;}
const char* s_maxaddress(const char* _maxaddress) {maxaddress = _maxaddress;}
const char* s_position(unsigned int _pos) {position = _pos;}
char r_comment() const {return comment;}
const char* r_address() const {return address + position;}
const char* r_maxaddress() const {return maxaddress;}
unsigned int r_position() const {return position;}
int geterror();
void set_error(int code) {errorcode = code;}
void set_comment(const char char_comment);
void set_position(unsigned int position);
void resetboundary(unsigned int address, unsigned int maxaddress);
};
class Integer: public Parser {
public:
//Get an int token
int GetInt();
};
class String: public Parser {
private:
int NullByToken(char*, int, char); //Null a string by token
void CleanString(std::string string); //Clean an string to its simple form (removing spaces, tabs, etc)
public:
Displacement* GetEndOfLine(); //Get len till end of line
Displacement* GetSimpleString();
bool SplitByChar(const char token, SplitString* setstrings);
};
class MultiOperation: public String, public Integer {
void* GetDataByPrefix(unsigned int Type, char token, const char* prefixcmp);
};
功能GetDataByPrefix需要訪問分析器類和需要訪問字符串和整類。
謝謝,我會看看它 – ffenix