2
在.hpp中的匿名命名空間中定義函數簽名時,將該函數的實現放在.cpp中是否有效?當我這樣做時,我得到一個未定義的引用錯誤。實現在匿名命名空間中聲明的函數時未定義的引用鏈接器錯誤
例子:
//hpp
#ifndef __BAR_HPP_
#define __BAR_HPP_
namespace foo
{
namespace
{
struct Bar
{
void func();
};
}
}
#endif
//cpp
using foo;
void Bar::func()
{
//...
}
爲什麼要使用這樣的匿名命名空間?像'__BAR_HPP_'這樣的名稱包含一個雙下劃線,或者以下劃線和大寫字母開頭的名字保留給C++實現。 – 2011-05-03 08:19:49
我這樣使用它,因爲函數func()只與Bar類有關。 – Graeme 2011-05-03 08:20:31
好吧,使它成爲酒吧的私人功能。或者將它放在Bar實現文件中的匿名名稱空間中。 – 2011-05-03 08:28:05