我有以下代码。我正在尝试创建一个给定服务器的类,该类将找到它的服务器类型,然后添加此类服务器的正确方法。到目前为止,我有一个虚拟类(class),我被困在这里。在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;
}
服务器1.h
void print() {
std::cout << "Ye1" << std::endl;
}
服务器2.h
void print(){
std::cout << "Ye2" << std::endl;
}
最佳答案
这是非常糟糕的设计。您最好尝试对Server类进行子类化,重新实现print()方法,或者仅将if-else语句放入print()中。