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