有點學術問題,但我在編寫一些單元測試時遇到了這個問題。C++/VS2005:在兩個不同的.cpp文件中定義相同的類名
我的單元測試框架(UnitTest ++)允許你創建結構來充當燈具。通常這些是針對文件中的測試定製的,所以我把它們放在我的單元測試文件的頂部。
//Tests1.cpp
struct MyFixture { MyFixture() { ... do some setup things ...} };
TEST_FIXTURE(MyFixture, SomeTest)
{
...
}
//Tests2.cpp
struct MyFixture { MyFixture() { ... do some other setup things, different from Tests1}};
TEST_FIXTURE(MyFixture, SomeOtherTest)
{
...
}
然而,我發現最近(與VS2005至少),當您使用相同的名稱命名夾具結構(所以現在具有相同的名稱存在於結構的兩個版本),那麼版本的一個被悄悄拋出。這非常令人驚訝,因爲我的編譯器設置爲/ W4(最高警告級別),並且沒有警告出現。我想這是一個名稱衝突,爲什麼命名空間是被髮明的,但是我真的需要將我的每個單元測試裝置都包裝在一個單獨的命名空間中嗎?我只是想確保我不會錯過更基本的東西。
有沒有更好的方法來解決這個問題 - 這是否應該發生?我不應該看到重複的符號錯誤或什麼?
+1,這是匿名命名空間旨在解決的確切問題 – 2010-01-15 22:18:59
因此,預計兩個燈具中的一個會默默覆蓋另一個,而不是來自鏈接器的單詞? – 2010-01-15 22:24:14
忘記吧 - 我明白了。我錯誤地/愚蠢地認爲名稱修改將應用於結構類型,因此鏈接器可以區分它們。 – 2010-01-15 22:43:11