我遇到了能够调用子类特有的函数/属性的问题.我想知道是否有办法做类似以下的事情:
public class Creature
{
public int HealthPoints {get; set;}
public string Name {get; set;}
public int AttackValue {get; set;}
public Creature();
}
public class Magical : Creature
{
public int Mana {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
因此,在这个基本的例子中,我有一个生物列表,并且需要能够从任何给定的魔法生物的法力属性中调用.
致力于在C++中实现我自己的BST,以获得处理此类结构的经验.
我在实现析构函数时遇到了麻烦.我在学习中发现,一个人不能真正有一个递归的析构函数(由于一个标志不允许在被调用后在同一个对象上调用析构函数),但我不确定是否另一种成功清理树中所有节点的方法.
为了补偿,我创建了一个辅助函数 - 但是这会在'delete n'行上抛出一个未解决的外部错误.有小费吗?
码:
void BinSearchTree::Clear(tNode* n)
{
if (n->left != NULL)
Clear(n->left);
if (n->right != NULL)
Clear(n->right);
delete n;
n = NULL;
size--;
}
Run Code Online (Sandbox Code Playgroud) 使用git流程.我们有一个不熟悉Git的同事昨天意外地合并了发展成师.
开发有很多功能,我们的下一个版本将启动,需要恢复合并.这创建了一个撤消所有更改的提交.当我们将master合并回develop时,revert commit会删除我们的功能生成的代码.
在保留新功能的同时,能够与master的修补程序同步开发的最佳方法是什么?
- 编辑 - 只是为了澄清,恢复是一个恢复.IE git revert -m 1 <sha>,因为提交已经被推送到远程存储库.
发布之后,我已经提出了一个可能的解决方案,通过分支主控并恢复还原,但是我很好奇是否有其他可能性可以最小化冲突.
我一直在教自己C++,并开始创建一个列表组织器来处理指针的概念.
我已经定义了一个名为List的类,它有三个属性:
int itemTotal;
Item* firstItem;
Item* lastItem;
Run Code Online (Sandbox Code Playgroud)
构造函数将其值设置为:
itemTotal = 0;
firstItem = NULL;
lastItem = NULL;
Run Code Online (Sandbox Code Playgroud)
我已经构建了一个函数来返回itemTotal的值:
int List::getItemTotal()
{
return itemTotal;
}
Run Code Online (Sandbox Code Playgroud)
在我的驱动程序中构建对象之后,itemTotal立即开始表现得很有趣并返回非常大的数字(每次都是-858993460),即使在List上没有完成任何工作,并且在程序中没有发生任何事情.我在构造函数中添加了一个cout,只是为了看看那里发生了什么,并且它回显了0值,但是一旦构造函数完成,值就会立即改变.
我一直试图用我的书来解决它并玩弄它,但我似乎无法解决这个问题,所以我想我会转向有经验的人.主要在以下:
int main()
{
List grocery;
cout << "itemTotal is now: " << grocery.getItemTotal() << endl; // Returns wrong value...
system("Pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
grocery List is built!
itemTotal inside of the constructor is 0!
itemTotal is now: -858993460
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?= /
编辑:每个请求,整个类(抱歉格式是丑陋的,我不想重新做这一切):
class List
{
public:
// Constructor
// Purpose: Builds object.
// …Run Code Online (Sandbox Code Playgroud) 所以我正在建立一个班级,为简单起见,我会在这里愚蠢.
这给出了编译器错误:"错误:对象具有与成员函数不兼容的类型限定符."
这是代码:
ostream& operator<<(ostream& out, const Foo& f)
{
for (int i = 0; i < f.size(); i++)
out << f.at(i) << ", ";
out << endl;
return out;
}
Run Code Online (Sandbox Code Playgroud)
at(int i)函数从索引i处的数组返回一个值.
如果我从Foo中删除const关键字,一切都很好.为什么?
编辑:每个请求,成员函数的声明.
.H
public:
int size(void);
int at(int);
Run Code Online (Sandbox Code Playgroud)
的.cpp
int Foo::size()
{
return _size; //_size is a private int to keep track size of an array.
}
int Foo::at(int i)
{
return data[i]; //where data is an array, in this case of ints
}
Run Code Online (Sandbox Code Playgroud)