繁体   English   中英

char分配不兼容的类型?

[英]incompatible types in assignment of char?

我收到此代码错误。 “将char分配给char [13]时出现不兼容的类型”,我不知道如何初始化这些数组并使之工作。 基本上,该程序采用ISBN代码(4组整数,并在每组数字之间使用一个带'-'的字符串组成)并验证它们是否正确。 该程序使用ISBN类和加载实际ISBN代码并尝试使用ISBN类对其进行测试的main函数。 这就是我所拥有的。

class ISBN {
private:
char group[6];                          
char publisher[8];                     
char book[8];                      
char check;  
char isbn[13];
char compute_check();

public:
ISBN();
ISBN(char newisbn[]);             
ISBN(char group[ ], char publisher[ ], char book[ ], char check);                                       
bool valid();                           
char *getpublisher();                  
void print(ostream &o);                 
};

ISBN::ISBN(char newisbn[]) : isbn(newisbn) {}

程序将加载这些ISBN号,然后以以下方式使用ISBN类打印和测试它们:

strcpy(isbns[index++], "1-57676-074-X");
ISBN isbn(isbns[i]);
isbn.print(cout);
if (isbn.valid())

我在将ISBN代码转换为ISBN类时遇到麻烦,因此它们可以由这些功能中的每一个操作。 任何帮助,不胜感激! 谢谢!

这个:

ISBN::ISBN(char newisbn[]) : isbn(newisbn) {}

不会做你想要的。 尽管您可能已经听说过,但是数组与指针并不相同-这里的构造函数正在使用指针(伪装成数组)并试图使用它来初始化实际的数组。 你需要:

ISBN::ISBN(char newisbn[]) {
   strcpy( isbn, newisbn );
}

我还建议调查一下std :: string类,以解决常规的字符串处理需求。

ISBN::ISBN(char newisbn[]) : isbn(newisbn) {}

您不能通过char *初始化char [13]。

您必须手动复制每个字符:

ISBN::ISBN(char newisbn[]) { strcpy(isbn, newisbn); }

C++存储字符串的直接方法实际上只是

const char* group = "Group";

如果需要额外的字符串功能,请查看string类

在C / C ++中,您可以将数组视为指向数组第一个元素的指针。 因此,在构造函数参数而不是数组中使用指针。 例如

ISBN::ISBN(const char* newisbn)
{
    strcpy(isbn, newisbn);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM