C++ VS 2017 C++;编译问题

C++ VS 2017 C++;编译问题,c++,C++,我的VS2017有问题。每次我在class.cpp文件中更改我的方法主体(例如,乘法)时,我都必须重写main函数中的指令。也就是说,如果我有一个a=b*c;语句我必须在“test.cpp”的main中删除并再次添加乘法符号,然后编译。否则,VS将不会在我的方法中包含更改,并将充当方法实现中根本没有更改的角色 提前谢谢 编辑 这是我试图修复的代码: template<typename T> Mx::Matrix<T>::Matrix(unsigned rows, unsi

我的VS2017有问题。每次我在class.cpp文件中更改我的方法主体(例如,乘法)时,我都必须重写main函数中的指令。也就是说,如果我有一个a=b*c;语句我必须在“test.cpp”的main中删除并再次添加乘法符号,然后编译。否则,VS将不会在我的方法中包含更改,并将充当方法实现中根本没有更改的角色

提前谢谢

编辑 这是我试图修复的代码:

template<typename T>
Mx::Matrix<T>::Matrix(unsigned rows, unsigned cols, T const & init_val)
{
    _matrix.resize(rows);
    for (unsigned i = 0; i < _matrix.size(); i++)
        _matrix[i].resize(cols, init_val);
    _rows = rows;
    _cols = cols;
}

template<typename T>
Mx::Matrix<T>::Matrix(Matrix<T> const & mx)
{
    _matrix = mx._matrix;
    _rows = mx.GetRows();
    _cols = mx.GetCols();
}

template<typename T>
Mx::Matrix<T> & Mx::Matrix<T>::operator=(Matrix<T> const & mx)
{
    if (this == &mx)
        return *this;

    unsigned new_rows = mx.GetRows();
    unsigned new_cols = mx.GetCols();

    _matrix.resize(new_rows);
    for (unsigned i = 0; i < _matrix.size(); i++)
        _matrix[i].resize(new_cols);

    for (unsigned i = 0; i < new_rows; i++) {
        for (unsigned j = 0; j < new_cols; j++) {
            _matrix[i][j] = mx(i, j); // musisz przeciazyc operator()()
        }
    }

    _cols = new_cols;
    _rows = new_rows;
    return *this;
}

template<typename T>
Mx::Matrix<T> Mx::Matrix<T>::operator+(Matrix<T> const & mx) const
{
    Mx::Matrix<T> temp(mx); // ALBO Mx::Matrix<T> temp(_rows, _cols, 0.0)
    for (unsigned i = 0; i < this->GetRows(); i++) {
        for (unsigned j = 0; j < this->GetCols(); j++) {
            temp(i, j) = (*this)(i, j) + mx(i, j); // ALBO this->_matrix[i][j]
        }
    }
    return temp;
}

template<typename T>
Mx::Matrix<T>& Mx::Matrix<T>::operator+=(Matrix<T> const & mx)
{
    return *this = *this + mx;
}

template<typename T>
Mx::Matrix<T> Mx::Matrix<T>::operator-(Matrix<T> const & mx) const
{
    Mx::Matrix<T> temp(mx); // ALBO Mx::Matrix<T> temp(_rows, _cols, 0.0)
    for (unsigned i = 0; i < this->GetRows(); i++) {
        for (unsigned j = 0; j < this->GetRows(); j++) {
            temp(i, j) = (*this)(i, j) - mx(i, j); // ALBO this->_matrix[i][j]
        }
    }
    return temp;
}

template<typename T>
Mx::Matrix<T>& Mx::Matrix<T>::operator-=(Matrix<T> const & mx)
{
    return *this = *this - mx;
}

template<typename T>
Mx::Matrix<T> Mx::Matrix<T>::operator*(Matrix<T> const & mx)
{
    unsigned rows = mx.GetRows();
    unsigned cols = this->GetRows();
    Mx::Matrix<T> temp(rows, cols, 0.0);

    for (unsigned i = 0; i < rows; i++) {
        for (unsigned j = 0; j < cols; j++) {
            for (unsigned k = 0; k < rows; k++) {
                temp(i, j) += (*this)(i, k) * mx(k, j);
            }
        }
    }
    return temp;}
模板
矩阵(无符号行、无符号列、T常量和初始值)
{
_矩阵。调整大小(行);
对于(无符号i=0;i<_matrix.size();i++)
_矩阵[i]。调整大小(cols,init_val);
_行=行;
_cols=cols;
}
样板
Mx::Matrix::Matrix(矩阵常量和Mx)
{
_矩阵=mx.\u矩阵;
_rows=mx.GetRows();
_cols=mx.GetCols();
}
样板
Mx::矩阵和Mx::矩阵::运算符=(矩阵常量和Mx)
{
if(this==&mx)
归还*这个;
未签名的新行=mx.GetRows();
未签名的new_cols=mx.GetCols();
_矩阵。调整大小(新的_行);
对于(无符号i=0;i<_matrix.size();i++)
_矩阵[i]。调整大小(新列);
for(无符号i=0;iGetRows();i++){
对于(无符号j=0;jGetCols();j++){
temp(i,j)=(*this)(i,j)+mx(i,j);//albothis->_矩阵[i][j]
}
}
返回温度;
}
样板
Mx::Matrix和Mx::Matrix::operator+=(矩阵常量和Mx)
{
return*this=*this+mx;
}
样板
Mx::矩阵Mx::矩阵::运算符-(矩阵常量和Mx)常量
{
Mx::矩阵温度(Mx);//ALBO Mx::矩阵温度(_行,_列,0.0)
对于(无符号i=0;iGetRows();i++){
对于(无符号j=0;jGetRows();j++){
temp(i,j)=(*this)(i,j)-mx(i,j);//albothis->_矩阵[i][j]
}
}
返回温度;
}
样板
Mx::Matrix和Mx::Matrix::operator-=(矩阵常量和Mx)
{
返回*this=*this-mx;
}
样板
Mx::矩阵Mx::矩阵::运算符*(矩阵常量和Mx)
{
unsigned rows=mx.GetRows();
unsigned cols=this->GetRows();
矩阵温度(行,列,0.0);
for(无符号i=0;i

在我在这里(或项目中的任何地方)进行每次更改之后,我必须做一些愚蠢的事情,从语句中删除一个字母(int main()),然后再次添加它,以便VS可以将我的更改包含在class.cpp文件中…

您共享的代码来自class.cpp文件?它必须全部位于头文件中,或者至少包含在头文件中,正如@manni66在对问题的评论中提到的那样。参见

请获取、阅读并向我们展示相关代码。欢迎来到SO。欢迎来到堆栈溢出。请复习。您的问题应包括您的特定编码相关问题的清晰大纲、您已经尝试的内容的摘要以及中的相关代码,以便我们有足够的信息提供帮助。cpp中没有实现模板。是的,请扩展您的问题。与此问题相关的是“matrix.hpp”include文件(如果有),它是如何从主文件from
class.cpp
中包含的。但目前MANN66的说法似乎是对的:模板的实现应该在头文件中(不像普通C++类)