我不想为每个简单的C++类编写一个.cpp文件。
当我在单个.hpp文件中编写类定义和声明时,连接器会抱怨成员函数的多重定义,这些函数没有在类体内实现。
因此,我使用模板来消除连接器的投诉:
当我在单个.hpp文件中编写类定义和声明时,连接器会抱怨成员函数的多重定义,这些函数没有在类体内实现。
因此,我使用模板来消除连接器的投诉:
// log.hpp file
template<typename T>
class log_t {
private:
int m_cnt = 0;
public:
void log();
};
template<typename T>
void log_t<T>::log() {
std::cout << ++m_cnt << std::endl;
}
// some random type (int)
typedef log_t<int> log;
然后我可以在多个.cpp
文件中简单地使用log
类,而不会出现链接器的问题。
这种方法有什么根本性的问题吗?
编辑:即使我使用这种方法,成员函数也会变成内联吗?