小编Div*_*Vox的帖子

C#Polymorphism - 访问不在父级中的子类的属性

我遇到了能够调用子类特有的函数/属性的问题.我想知道是否有办法做类似以下的事情:

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# polymorphism

9
推荐指数
3
解决办法
7203
查看次数

二进制搜索树析构函数

致力于在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)

c++ recursion data-structures

9
推荐指数
1
解决办法
3万
查看次数

合并时避免在另一个Git分支中恢复提交的影响

使用git流程.我们有一个不熟悉Git的同事昨天意外地合并了发展成师.

开发有很多功能,我们的下一个版本将启动,需要恢复合并.这创建了一个撤消所有更改的提交.当我们将master合并回develop时,revert commit会删除我们的功能生成的代码.

在保留新功能的同时,能够与master的修补程序同步开发的最佳方法是什么?

- 编辑 - 只是为了澄清,恢复是一个恢复.IE git revert -m 1 <sha>,因为提交已经被推送到远程存储库.

发布之后,我已经提出了一个可能的解决方案,通过分支主控并恢复还原,但是我很好奇是否有其他可能性可以最小化冲突.

git git-revert git-flow

9
推荐指数
2
解决办法
3605
查看次数

C++对象 - 私有int返回奇怪的值

我一直在教自己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)

c++ object

6
推荐指数
1
解决办法
2074
查看次数

C++ - 插入运算符,const关键字导致编译器错误

所以我正在建立一个班级,为简单起见,我会在这里愚蠢.

这给出了编译器错误:"错误:对象具有与成员函数不兼容的类型限定符."

这是代码:

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)

c++ const operator-overloading

1
推荐指数
1
解决办法
1990
查看次数