0

我有一個編譯和運行的程序(我認爲它應該),但在代碼窗口中星號(運算符*)在它下面有一個紅色的波形曲線,鼠標懸停的標題說'錯誤,沒有操作符*匹配這些操作數。'我想這條曲線忽略了告訴編譯器。如果我將運算符*更改爲名爲「dot」的函數,也會發生同樣的情況。如何在Visual Studio C++ 2010 IDE中報告錯誤

如果有足夠的箍環跳過,我想報告給MS。但首先,告訴我編譯器和我是否是錯誤的,並且曲線是正確的。

#include <vector> 
#include <iostream> 
//#include "fp_vectors.h" 
// Header file ================= 
#include <type_traits> 
#include <algorithm> 

namespace dj { 

    // Dot-product of two real-valued vectors 
    template <typename FirstType, typename SecondType> 
    auto operator*(const FirstType &a, const SecondType &b) -> decltype(a[0]*b[0]){ 
     std::remove_const<decltype(a[0]*b[0])>::type ret = 0.0; 
     const int sz = std::min(a.size(),b.size()); 
     for(int i=0;i<sz;++i) { 
      ret += a[i]*b[i]; 
     } 
     return ret; 
    } 


} // namespace dj 

// End header file ================ 


using namespace std; 
typedef vector<float> fvec; 
typedef vector<double> dvec; 

using namespace dj; 

int main() 
{ 
    const size_t sz = 3; 
    fvec fv(sz); 
    dvec dv(sz); 
    for(size_t i=0; i<sz; ++i) { 
     fv[i] = -.89f*(i-1.0f); 
     dv[i] = 1.6*(i-2.2); 
    } 
    double ret = dv*fv; // Earns a red squiggly 
    cout << ret << endl; 
    return 0; 
} 

回答

3

Visual Studio中的錯誤可能會在Microsoft Connect上報告。但是,我簡要了解了您的代碼,並且Visual Studio 2012中沒有波形。因此,如果這裏有bug,它看起來已經修復了。

+0

然後,我會等待VC++ 2012,假設有一個Express版本。無需學習如何報告VC++ 2010中的錯誤,因爲它似乎有一個用於報告VC++ 2012中的錯誤的新工具,可以減少環數。 – 2012-08-14 23:24:10

+0

自從Visual Studio 2005時間框架以來,Microsoft Connect已經存在了一段時間。將會有幾個Express版本:一個用於Windows 8應用程序開發,另一個用於桌面應用程序開發。 – 2012-08-14 23:26:18

+0

會有一個簡單的舊XP/Vista/Win7 Express版本嗎?我將我的頭探入Microsoft Connect。 VC++ 2010至少有一點學習曲線,但主頁是宣傳一個程序,該程序可以讓VC++ 2012更輕鬆地報告錯誤。我可以等待。明天應該會有某種版本發佈(2012年8月15日)。我們將看到那裏。你是MS員工嗎? Beta測試者? – 2012-08-14 23:32:32