2012-03-20 96 views
-1

我想实现一个转让的显式转换构造函数,我很困惑我需要做什么。我有一个包含单个元素的单词表,和我做这个构造明确,所以我不能做:C++显式转换构造函数

WordList myList; 
list = 'i'; // error 
+0

什么赋值运算符你有为WordList? – Akanksh 2012-03-20 16:37:18

+0

这是赋值(但在名称中有拼写错误)而不是构造 – Flexo 2012-03-20 16:37:24

+0

可能的重复[C++中的显式关键字是什么意思?](http://stackoverflow.com/questions/121162/what-does-the-explicit-关键字在C - 平均值) – 2012-03-20 16:38:05

回答

8

所有你需要使用explicit关键字为:

class WordList 
{ 
    explicit WordList(char c) {} 
}; 

WordList w = 'i'; //error 
WordList v ('i') ; //ok 
+0

我尝试将我的.cpp和.h文件中的构造函数前面的关键字显式放在前面,但我收到错误“非法存储类”。当我的教授看到它时,我不能在这里发布我的代码。 – Jon 2012-03-20 16:39:57

+0

@ user1277607:否。仅在.'h'文件中,仅在声明中执行。在我的例子中,我将它定义在类本身中,因此在这种情况下(在定义中)允许“显式”。 – Nawaz 2012-03-20 16:40:34

+1

谢谢。它工作得很漂亮:) – Jon 2012-03-20 16:43:49