我正在观看MVA关于C++的教程,我在下面提到的代码是由凯特写的而不是我.然而,她似乎没有编译显示任何错误,但在我的情况下,我得到以下错误:
错误1错误C2797:'NamedRectangle :: _ name':成员初始化列表中的列表初始化或非静态数据成员初始化程序未实现c:\ users\abhimanyuaryan\documents\visual studio 2013\projects\kate demos\17 inheritance\inheritance \namedrectangle.h 12 1继承
代码中的第12行来自我的NameRectangle类继承自Rectangle类:
class NamedRectangle : public Rectangle
{
public:
NamedRectangle() { }
NamedRectangle(std::string initial_name, int initial_width, int initial_height)
: Rectangle{ initial_width, initial_height }, _name{ initial_name } //--> This line
{}
std::string get_name() const { return _name; }
private:
std::string _name;
};
Run Code Online (Sandbox Code Playgroud)
当我std::string从构造函数中删除initial_name以及_name{initial_name}代码编译时.请解释我,不要把我当作经验丰富的高级程序员.我昨天才开始使用C++.
我正在观看MVA(微软视觉学院)的教程,我遇到了这两个运算符{},=即将值传递给变量.我已经完成了C编程,所以我非常了解赋值运算符=.但是{}到目前为止我没有用过任何语言.
凯特正在教授C++课程,所以她说这{}是用于复制的.
但是我{}在下面的类中使用了运算符,当我尝试这样做时它显示了一些错误:
this->_width{new_width};
Run Code Online (Sandbox Code Playgroud)
而下面一个工作:
this->_width = new_width;
Run Code Online (Sandbox Code Playgroud)
为什么这样?我也{}用于在构造函数中传递值,但它们完美地工作.唯一的问题是会员功能.
class Rectangle
{
public:
void resize(int new_height, int new_width) { this->_width{new_width ; this->_height{new_height}; //member function
Rectangle(): _width{} , height{} {} //constructor
private:
int _width;
int _height;
};
Run Code Online (Sandbox Code Playgroud)