成员变量不会保存从函数成员添加到它的值

Member variable does not save value added to it from member from functiion

本文关键字:成员 添加 变量 保存 函数      更新时间:2023-10-16

您好,我有一个小问题,我正在尝试从成员函数为类中的某个成员变量赋值。一切似乎都很好,但是一旦我的程序返回到 EAN::read(...);成员变量 -->"╠╠╠╠╠"中现在有奇怪的字符。任何人都可以向我解释我做错了什么?谢谢。

///My class ////
   class EAN
{
char string[13];
char strStyle[18];
char styles[2];
char area[6];
char publisher[8];
char title[8];
bool registered;
public:
///and member functions here//
};
////First member function that is called///
bool EAN::read(std::istream& is, const Prefix& list){
char str[13];
bool keepgoing = false;
do{
    cout << "Enter a EAN(0 to quit): ";
    is >> str;
    if (str == nullptr || strlen(str) < 13){
        keepgoing = false;
        registered = false;
    }
    else{
            keepgoing = true;
            EAN(str, list); ///this is where member variable will be assigned//
            registered = true;  
            std::cout << "this is area" << area << endl; 

    }
} while (keepgoing == false);

return keepgoing;
}
////////Here is the constructor that assigns the values to member variable//
EAN::EAN(const char* str, const Prefix& list){
int keepgoing = 0, j = 3, i = 0;
string[13] = '';
strStyle[18] = '';
area[6] = '';
publisher[8] = '';
title[8] = '';

if (isValid(str) == 1 && str[0] == '9' && str[1] == '7'|| str[2] == '8' || str[2] == '9') {
        keepgoing = 1;
        strcpy(string, str);
        if (isRegistered(list) == true){
            char _area[6];
            int lengthArea = 0;
            while (i < 5) {
                _area[i] = str[j];
                _area[i + 1] = '';
                if (list.isRegistered(atoi(_area))) {
                    strcpy(area, _area); **<--- ///assign value to member variable.///**
                    lengthArea = strlen(area);
                    i = 6; // exit loop
                    keepgoing = 1;
                }
                else
                {
                    i++;
                    j++;
                }
            }
  .......more coding pretty same as above.
}
所有这些

值,您都在注销分配内存的末尾:

string[13] = '';
strStyle[18] = '';
area[6] = '';
publisher[8] = '';
title[8] = '';

如果要将最后一个字符设置为 null,请按以下步骤操作:

char string[13];
string[12] = '';

因为索引为零;

嘿伙计

们感谢您的帮助,如果您仔细观察,我会弄清楚,伙计们,我在成员函数中调用了构造函数,但我是为了返回我使该构造函数分配的内容。

所以我错过了 *this = EAN(str, list);

谢谢你们的帮助。