2015-04-02 150 views
0

我的学校项目要求我重新创建std :: string类(使用较少的细节)。我有一个小问题,我有两个冲突的(?)构造函数。我如何调用char构造函数而不是char []构造函数

问题是当我想从单个字符创建一个字符串。而不是调用的

String(char); 

它调用

String(char[]); 

如何指定哪个构造我想叫什么名字?

更新 哇,现在我觉得很傻。我使用char *调用,而不是char,所以当然会调用数组/指针版本。感谢您使这个痛苦明显,我:)

+0

你在创建String时使用单引号'''吗? – 2015-04-02 16:49:17

+4

请形成[MCVE](http://stackoverflow.com/help/mcve)。 – chris 2015-04-02 16:49:50

+1

_“我怎样才能指定我想调用哪个构造函数?”_您使用传递的相应类型之一作为参数来消除歧义。 – 2015-04-02 16:50:00

回答

0

您需要使用单引号,否则指定char它会认为这是一个char[]使用单个字符(除了终止字符)

'a' // char 
"a" // char[] 
+0

对不起,我没有指定,我打电话使用一个字符变量。 – user1929613 2015-04-02 16:50:05

+1

@ user1929613实际上有什么问题?使用'char var;'调用你的构造函数应该选择你的第一个表单。 – 2015-04-02 16:51:46

+0

更新后,问题解决了。我的错误:)谢谢你的帮助。 – user1929613 2015-04-02 17:01:44

1

应该您有以下

class String { 
public: 
    String(char); 
    String(char[]); 
}; 

您将使用

char charvar = 'X'; 
String s(charvar); 

调用第一形式,并且

char strvar[] = "XXXX"; 
String s(strvar); 

来调用所述第二。

除此之外,您的问题太不清楚/不具体,为您实际要实现的目标给出一个简明的答案。