我正在使用directX在c ++中制作游戏
但我也有游戏的控制台版本(使用'X和其他角色代表事物)
我有以下代码:
Unit::Unit(UnitType u){
ZeroAll(); // function that zeros all variables
this->operator=(fileToUnit(u)); // error making code
}
UnitType是一个简单的枚举数据类型,有三个值{Infantry,Alien,Predator}。
操作员功能定义如下
Unit operator= (Unit u) { return u; }
fileToUnit是......
Unit fileToUnit(UnitType u);
只需创建一个临时单位并返回它。我真的不知道怎么做,但我需要在构造函数中更改整个类。
编辑: 抱歉这么不明确
我的问题是: 如何使类根据函数的结果更改其值
喜欢
this = functionReturningSameDataType( DataType ConstructorParameters );
错误如下
Microsoft Visual C++ Runtime Library
Debug Assertion Failed!
Program: C:\Windows\system32\MSVCP110D.dll
File: C:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring
Line: 1143
Expression: invalid null pointer
For Information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press Retry to Debug the application)
答案 0 :(得分:0)
如果我正确理解你的问题,你有一个自由函数,它以UnitType
为参数,以某种方式构造Unit
,这可能是基于UnitType
实例,然后将其返回给构造函数Unit::Unit(UnitType)
。
我不确定在这种情况下我是否完全理解Unit fileToUnit(UnitType u)
的目的。为什么它是免费功能?使它成为一个成员函数并从构造函数中调用它:
class Unit
{
private:
// Example data members
int foo;
int bar;
public:
Unit(UnitType u)
{
fileToUnit(UnitType u);
};
private:
void fileToUnit(UnitType u)
{
// Set data members here
foo = 1;
bar = 1;
};
};
编辑:在我这样的简化示例中,fileToUnit
根本不需要存在,代码应该直接在构造函数中:
class Unit
{
private:
// Example data members
int foo;
int bar;
public:
Unit(UnitType u)
{
// Set foo and bar here, using whatever
// information you need from u
};
};