我有以下代码。我正在尝试创建一个给定服务器的类,该类将找到它的服务器类型,然后添加此类服务器的正确方法。到目前为止,我有一个虚拟类(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()中。

09-10 04:38
查看更多