Đây là vấn đề của tôi: Tôi có một phương thức ảo được định nghĩa trong tệp .h mà tôi muốn gọi trong một lớp kế thừa từ lớp cơ sở. Đáng buồn thay, phương thức trong lớp dẫn xuất không được gọi. Có cách nào tốt hơn để thực hiện những gì tôi đang cố gắng làm không?Thừa kế trong C++
#ifndef ofxBASE_SND_OBJ
#define ofxBASE_SND_OBJ
#include "ofConstants.h"
class ofxBaseSndObj {
public:
virtual string getType(){}
string key;
};
#endif
Đây là lớp buzz tôi
#ifndef OFXSO_BUZZ
#define OFXSO_BUZZ
#include "ofxBaseSndObj.h"
class ofxSOBuzz : public ofxBaseSndObj
{
public:
string getType();
};
#endif
ofxSOBuzz.cpp
string ofxSOBuzz::getType()
{
string s = string("ofxSOBuzz");
printf(" ********* returning string type %s", s.c_str()); // doesn't get called!
return s;
}
Sau đó, trong một lớp học tôi cố gắng gọi nó theo cách này:
string ofxSndObj::createFilter(ofxBaseSndObj obj)
{
string str = obj.getType();
if(str.compare("ofxSOBuzz") == 0)
{
printf(" all is well ");
}
}
Trong phương pháp này ở trên tôi cần để có thể vượt qua trong một m bất kỳ loại đối tượng nào mà tất cả đều mở rộng đối tượng ofxBaseSndObj. Mọi gợi ý hay gợi ý sẽ được đánh giá cao. Cảm ơn!
Theo như tôi biết, tiêu đề của bạn (nơi bạn xác định ofxBaseSndObj) sẽ không biên dịch vì bạn có hàm có loại trả về không trống mà không có câu lệnh trả về. Làm thế nào bạn quản lý để chạy này? – Arkadiy
Về thời gian để chấp nhận câu trả lời đúng !! Nhấp vào một trong các dấu kiểm bên cạnh câu trả lời mà bạn cho là trả lời câu hỏi tốt nhất. –