#include <iostream>
using namespace std;
struct testarray{
int element;
public:
testarray(int a):element(a){}
};
class myarray
{
public:
testarray i;
public:
myarray(testarray a) : i(a){ }
} ;
int main()
{
myarray objArray[3] = {1,2,3};
return 0;
}
以上代码在Visual C ++ 2005 Express Edition IDE中编译良好。但我想要的是防止编译器隐式地类型化对象类型。
答案 0 :(得分:9)
对explicit
构造函数使用关键字testarray
,以便编译器不执行隐式转换。基本上你需要把构造函数编写为:
explicit testarray(int a):element(a){}
答案 1 :(得分:4)
您可以使用explicit
关键字作为结构构造函数。
答案 2 :(得分:1)
是的,请使用上述关键字“explicit”。 关于你提供的来源的另一个建议:为什么你在结构中有“公共”?默认情况下,所有struct的成员都是公共的。如果你想使用不同的访问修饰符(例如,几个“私人”成员或方法)使用smth,你最好使用类。
答案 3 :(得分:0)
也许您希望构造函数为explicit
?