C 复制构造函数当类具有另一个类的数组时
C++ Copy Constructor when Class has an array of another Class
我仍在学习课程,复制构造函数和超载运算符,以便任何建议/帮助/-> s受到赞赏!!!
我试图用类Test2制作一个复制构造函数,该类别具有来自另一个类Test1的私有成员变量。我已经在代码中评论了给我业务所在的复制构造函数。
这是我在编译时遇到的错误:
assOp.cpp: In copy constructor 'Test2::Test2(const Test2&)':
assOp.cpp:102:25: error: passing 'const Test2' as 'this' argument of 'int Test2:
:getNum()' discards qualifiers [-fpermissive]
setNum(original.getNum());
^
assOp.cpp:103:27: error: passing 'const Test2' as 'this' argument of 'char* Test
2::getChar()' discards qualifiers [-fpermissive]
setChar(original.getChar());
这是代码:
#include <iostream>
#include <cstring>
using namespace std;
class Test1
{
public:
Test1();
Test1(const Test1& original);
int getNum();
char *getChar();
void setNum(int x);
void setChar(char y[]);
private:
int num;
char *ch;
};
class Test2
{
public:
Test2();
Test2(const Test2& original);
void setNum(int x);
void setChar(char y[]);
int getNum();
char *getChar();
private:
Test1 foo;
};
int main()
{
Test1 a;
Test2 b;
return 0;
}
Test1::Test1()
{
num = 1234;
ch = new char[5];
strcpy(ch,"test");
}
Test1::Test1(const Test1& original)
{
int length = strlen(original.ch);
num = original.num;
ch = new char[length + 1];
strcpy(ch, original.ch);
ch[length] = ' ';
}
int Test1::getNum()
{
return num;
}
char *Test1::getChar()
{
return ch;
}
void Test1::setNum(int x)
{
num = x;
}
void Test1::setChar(char y[])
{
int length = strlen(y);
ch = new char[length + 1];
strcpy(ch, y);
ch[length] = ' ';
}
Test2::Test2()
{
}
//Sassy copy constructor that thinks its better than me
Test2::Test2(const Test2& original)
{
setNum(original.getNum());
setChar(original.getChar());
}
void Test2::setNum(int x)
{
foo.setNum(x);
}
void Test2::setChar(char y[])
{
foo.setChar(y);
}
int Test2::getNum()
{
return foo.getNum();
}
char *Test2::getChar()
{
return foo.getChar();
}
^
问题是由
引起的 int getNum();
char *getChar();
由于这些功能不是const
成员函数,因此不能在const
对象上使用它们。通常,使所有GETTER功能const
成员函数。
int getNum() const;
char const* getChar() const;
相关文章:
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 将一个类的对象放在另一个类的数组中
- 当使用我在一个函数、另一个函数中修改的数组时,在我的输出中得到一个奇怪的负数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 存储另一个函数返回的布尔数组时遇到问题
- 初始化类中的指针数组,并在另一个类中检索它
- std::transform 将一个结构数组复制到另一个结构数组
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- 如何在 c++ 上将一定大小的数组填充到另一个更大大小的数组中?
- 如何将 v8::FunctionCallbackInfo<v8::Value> 数组从一个隔离复制到另一个隔离?
- 如何为包含另一个类实例的数组制作常量 getter?
- 使用对另一个元组不同类型的元素的非常量引用来初始化元组的元素
- 接受元组并返回另一个元组的功能
- 从另一个 c++ 对数组进行排序
- 用另一个元组中的元素填充一个元组