我在第27行和第28行代码中遇到5个错误:
Request * ServerFactory::make_request(int type) {
if (type == 1)
return new RequestA(); // line number 27
else if (type == 2) // line number 28
return new RequestB();
else if (type == 3)
return new MRRequest();
return NULL;
}
并且错误是:
1.error: expected type-specifier before ‘RequestA’.
2.error: cannot convert ‘int*’ to ‘Request*’ in return.
3.error: expected ‘;’ before ‘RequestA’.
4.error: ‘RequestA’ was not declared in this scope.
5.error: ‘else’ without a previous ‘if’
Request是RequestA,MRRequest和RequestB的父类。
我包括的这些文件:
1.#include "../../../include/request/Request.h"
2.#include "../../include/request/RequestA.h"
3.#include "../../include/request/RequestB.h"
还有更多
RequestA.h
#ifndef REQUESTA_H_
#define REQUESTA_H_
#include "../../../include/request/Request.h"
#include "../../../../include/common/GsmMeasurements.h"
class RequestA : public Request
{
public:
enum { TYPE = 1 , MAX_DATA_LEN = 10 };
RequestA( );
virtual ~RequestA( );
virtual int get_type( ) const;
virtual void * get_data( ) ;
virtual const void * get_data( ) const ;
virtual int get_length( ) const;
virtual void set_length( int length );
private:
char data_[MAX_DATA_LEN + 1];
int data_length_;
};
#endif /* REQUESTA_H_ */
Request.h
#ifndef REQUEST_H_
#define REQUEST_H_
#include "../../../include/common/GsmMeasurements.h"
class Request
{
public:
virtual ~Request( ){}
virtual int get_type( ) const = 0;
virtual void * get_data( ) = 0;
virtual const void * get_data( ) const = 0;
virtual int get_length ( ) const = 0;
virtual void set_length( int length ) = 0;
};
#endif /* REQUEST_H_ */
答案 0 :(得分:0)
检查RequestA.h,RequestB.h和Request.h中的标题保护
这是我常犯的错误。