我有以下代码。我正在尝试创建一个类,给定一个服务器,它找到它的服务器类型,然后添加这种服务器的正确方法。到目前为止,我有一个虚拟课,我被困在这里。在defineServer()
函数中,我定义了一个宏并为其赋值1或2.在类声明之外,然后我尝试包含它们。有没有办法解决或做到这一点?
Server.cpp
class Server {
public:
Server(int server) {
//setServerType(getServerType());
//defineServer(getServerType());
this->server = server;
}
void defineServer() {
if(this->server == 1) {
#define SERVER 1
std::cout << "SERVER_1 defined" << std::endl;
}
if(this->server == 2){
#define SERVER 2
std::cout << "SERVER_2 defined" << std::endl;
}
}
#if SERVER 1
#include "Server1.h"
std::cout << "Server 1 added" << std::endl;
#endif // SERVER_1
#if SERVER 2
#include "Server2.h"
std::cout << "Server 2 added" << std::endl;
#endif // SERVER_2
private:
int server;
};
主要功能:
int main() {
Server server = Server(1);
server.defineServer();
server.print();
return 0;
}
Server1.h
void print() {
std::cout << "Ye1" << std::endl;
}
Server2.h
void print(){
std::cout << "Ye2" << std::endl;
}
答案 0 :(得分:2)
这是非常糟糕的设计。您最好尝试子类化Server类,重新实现print()方法,或者只将if-else语句放入print()。