小编Mic*_*ael的帖子

使用抽象类创建复制构造函数

我正在尝试复制一个对象,然后对其进行修改,而不更改原始对象。相关的类有:

abstract class Upgrade {}

class Shield: Upgrade
{
  public Shield(Shield a) {}
}
Run Code Online (Sandbox Code Playgroud)

问题是当另一个类想要获取“升级”对象但该类不知道它获取哪个对象时。例如:

public void AddUpgrade(Upgrade upgrade)
{
    for (int i = 0;i<Aliens.Count; i++)
    {
        Aliens[i].AddUpgrade(What should i put here?);
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须使用复制构造函数,因为我不希望所有外星人共享相同的升级引用,但升级是一个抽象类,那么我应该做什么?

c# oop

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

C中的任意长度字符串

我需要对字符串进行一些操作(比如在某些地方添加字母).我不知道它的大小,取决于输入.

如何定义字符串而不指定其大小?我希望它适应我放在里面的任何内容.

为什么我不能只将空char *方法传递给方法?编译器不允许这样做.

根据答案,我明白我无法创建无限大小的字符串.但是,例如,当我尝试创建char arr[100]并且我的字符串的长度只有8个字符时,当我打印时,arr我得到了更多的字母然后我想要.其中一些甚至不是字符串的一部分.怎么可能?

c string

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

如何在C中安全地使用枚举?

考虑以下示例:

typedef enum {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday} Day;
void DoSomething(Day day){
//some code
}
Run Code Online (Sandbox Code Playgroud)

问题是以下代码符合:DoSomething(74).那么如何在DoSomething中查看我的参数真的是一天?(依赖于数字将无法工作,因为如果我改变我的枚举Sunday=7....我希望它也能工作,并且检查if(day==Sunday || day ==...)看起来效率低下).

c enums

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

改变常量字符串(C99)

我有2个关于该代码的问题:

char* word="Hello World";
word[0]='a';
printf("%s",word);
Run Code Online (Sandbox Code Playgroud)

我知道当你创建这样的字符串时,你不能更改字符串,因为它是一个常量字符串,所以我不明白为什么我可以运行这段代码并且没有任何错误(我使用代码块C99)?另一个奇怪的事情是,这个词并没有真正改变,printf仍在打印:"Hello World".

c string

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

崩溃的代码(指针C99)

我试图理解为什么代码崩溃:( CodeBlocks C99)

int a;
int **b=0;
*b=&a;
Run Code Online (Sandbox Code Playgroud)

我知道*b的类型是 int*而且&a也是int*所以这里的问题是什么?

c pointers

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

标签 统计

c ×4

string ×2

c# ×1

enums ×1

oop ×1

pointers ×1