main.cpp
#include <iostream>
#include "kernel_registry.h"
static KernelRegistrar LiuYu("liuyu");
int main()
{
auto res = KernelRegistry::GetInstance()->getReg();
std::cout<<"Hello, World!"<<std::endl;
return 0;
}
kernel_registry.cc
#include "kernel_registry.h"
KernelRegistry *KernelRegistry::GetInstance() {
static KernelRegistry instance;
return &instance;
}
void KernelRegistry::RegKernel(const string &name) {
names_.push_back(name);
}
vector<string> KernelRegistry::getReg(){
return names_;
}
kernel_registry.h
#include <vector>
#include <string>
using namespace std;
class KernelRegistry {
public:
static KernelRegistry *GetInstance();
void RegKernel(const string &name);
vector<string> getReg();
private:
vector<string> names_;
};
class KernelRegistrar {
public:
KernelRegistrar(const string &name) {
KernelRegistry::GetInstance()->RegKernel(name);
}
};