我不清楚哪种解决方案更好,因为我不太明白它们之间的区别。我想要一个包含一些变量的文件,这些变量可以在整个程序中自由使用。我的第一次尝试如下:
头文件(Hosts.h)
#pragma once
#include <string>
namespace Some::Namespace {
using std::string;
class Hosts {
public:
static const unsigned int SOME_DEVICE_PORT;
static const string SOME_DEVICE_IP;
};
}
实现文件(Hosts.cpp)
#include <Network/Hosts.h>
namespace Some::Namespace {
const unsigned int Hosts::SOME_DEVICE_PORT = 10100;
const string Hosts::SOME_DEVICE_IP = "192.168.1.1";
}
后来我了解到inline关键字,它可以使实现文件不再需要,你可以仅在头文件中定义变量 - 就像这样:
带有inline的头文件(Hosts.h)
#pragma once
#include <string>
namespace Some::Namespace {
using std::string;
class Hosts {
public:
static const unsigned int SOME_DEVICE_PORT = 10100;
inline static const string SOME_DEVICE_IP = "192.168.1.1";
};
}
现在我的问题是:这些实现在变量实例数量方面有何不同?最好每个变量只有一个实例。但是,这两种解决方案是否会做到这一点,还有其他优化方面的陷阱吗?
谢谢。