小编BJ *_*ers的帖子

有人可以帮助澄清头文件的工作原理吗?

我已经用C++工作了好几周了,但是头文件(或者我认为的链接器)背后的机制让我感到困惑.我已经习惯于创建一个"main.h"来分组我的其他头文件并保持main.cpp整洁,但有时这些头文件抱怨无法找到不同的头文件(即使它已声明在"main.h"中.我可能没有很好地解释它,所以这是我正在尝试做的简略版本:

//main.cpp

#include "main.h"
int main() {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

-

//main.h

#include "player.h"
#include "health.h"
#include "custvector.h"
Run Code Online (Sandbox Code Playgroud)

-

//player.h

#include "main.h"
class Player {
    private:
        Vector playerPos;
    public:
        Health playerHealth;
};
Run Code Online (Sandbox Code Playgroud)

-

//custvector.h

struct Vector {
   int X;
   int Y;
   int Z;
};
Run Code Online (Sandbox Code Playgroud)

-

//health.h
class Health {
    private:
        int curHealth;
        int maxHealth;
    public:
        int getHealth() const;
        void setHealth(int inH);
        void modHealth(int inHM);
};
Run Code Online (Sandbox Code Playgroud)

我不会包括health.cpp,因为它有点冗长(但确实有效),它确实有#include "health.h".

无论如何,编译器(Code :: Blocks)抱怨"player.h"找不到类型'Health'或'Vector'.我认为,如果我使用#include "main.h""player.h",它将能够找到定义HealthVector感觉它们包含在"main.h"中.我想他们会按照自己的方式进行隧道(player.h - …

c++ header file

6
推荐指数
2
解决办法
3155
查看次数

什么时候阅读和写入记忆合法?

如果我错了,请纠正我.我问这个问题是为了澄清我的一些想法.

今天在学校我了解到,当一个进程(程序)执行时,操作系统会给它一个内存空间.例如,这两个程序:

PROGRAM1:

    static void Main(string[] args)
    {

        unsafe // in debug options on the properties enable unsafe code
        {

            int a = 2;

            int* pointer_1 = &a; // create pointer1 to point to the address of variable a

            // breakpoint in here !!!!!!!!!!!!!!!!!

            // in the debug I should be able to see the address of pointer1. Copy it and 
            // type it in the console

            string hexValue = Console.ReadLine();

            // convert the hex value to base 10
            int …
Run Code Online (Sandbox Code Playgroud)

c# memory pointers

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

如何在IntelliJ中重构时将更改日志保留在git文件中?

当我在IntelliJ中重构类时,git会丢失文件旧日志的轨迹?有没有办法重构文件,以便保存日志,或者我错过了什么?

我在SourceTree中检查文件的日志,但我想它对于一切都是一样的.

git logging refactoring intellij-idea atlassian-sourcetree

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

使用OpenSSH的Windows上的SourceTree

运行Windows 7,SourceTree 1.5.1.0配置为使用openssh,针对GitHub运行.

当我的私钥(存储在C:\Users\MyUser\.ssh)被调用时,id_rsa一切正常:我可以克隆github存储库,拉,等等.但是当我将我的私钥重命名为其他东西时(当然,让SourceTree知道这一点),它无法连接.

此外:如果我创建C:\Users\MyUser\.ssh\config并添加类似的东西

Host github2
    Hostname github.com
    User git
    IdentityFile something_else
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.好像SourceTree中的OpenSSH是硬连线只读id_rsa.

想法?

windows openssh github atlassian-sourcetree

6
推荐指数
0
解决办法
2305
查看次数

为什么无法使用非分段更改完成功能?

当我的沙盒包含未分级/非提交的更改时,有什么特殊原因导致我无法"完成功能"(使用git-flow)吗?

git git-flow atlassian-sourcetree

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

Sourcetree:如何忽略子模块

Sourcetree默认情况下会提取子模块,这是CLI不做的事情(由dafault提供).如何阻止sourcetree拉动子模块?

git-submodules atlassian-sourcetree

6
推荐指数
0
解决办法
791
查看次数

计算 SourceTree 中两个分支之间更改的行数

我一直在尝试查看是否有任何命令可以为我提供两个分支之间的源树中的更改行。

命令 - git diff --stat Branch1..branch2 -- '*.cs'

它为我提供了更改的文件以及插入和删除行。由于任何修改的条目 sourcetree 都会被视为删除和插入,因此上述命令没有帮助。

任何帮助将不胜感激。

git git-branch atlassian-sourcetree

6
推荐指数
0
解决办法
1266
查看次数

当text为null时,text?.IndexOf(ch)!= -1为True?

观察:如果text为null,则此方法返回True.我期待False.

return text?.IndexOf('A') != -1;
Run Code Online (Sandbox Code Playgroud)

当我使用ILSpy(或检查IL)反映上述行时,这是生成的代码:

return text == null || text.IndexOf('A') != -1;
Run Code Online (Sandbox Code Playgroud)

这是我真正需要满足我的期望:

return text != null && text.IndexOf('A') != -1;
Run Code Online (Sandbox Code Playgroud)

问题:有人对Null条件代码生成OR表达式的原因有一个很好的解释吗?

完整示例:https://dotnetfiddle.net/T1iI1c

c# c#-6.0 null-conditional-operator

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

根据开始和结束价值以及价值持有者的数量分配价值

我正在尝试根据开始值和结束值将值分配给特定数量的值持有者。

如果 Value Holders 的数量等于 Start Values 和 End Values 的差值,这只是一个简单的迭代:

Start Value  : 1
End Value    : 10
Value Holders: 10
|
Expected Result: 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

如果 Value Holder 的数量小于 Start Values 和 End Values 的差值,我们需要跳过一些数字。目标是尝试尽可能均匀地分配值。

注意:靠左/靠右并不重要:)

Start Value  : 1
End Value    : 10
Value Holders: 5
|
Expected Result: 1 3 5 8 10
                 or
                 1 3 6 8 10

Start Value  : 1
End Value    : 10
Value …
Run Code Online (Sandbox Code Playgroud)

c#

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

我如何要求用户输入C#

我正在从Python切换到C#,我遇到了这个ReadLine()功能的问题.如果我想要求用户输入Python,我就是这样做的:

x = int(input("Type any number:  ")) 
Run Code Online (Sandbox Code Playgroud)

在C#中,这变为:

int x = Int32.Parse (Console.ReadLine()); 
Run Code Online (Sandbox Code Playgroud)

但是如果我输入这个,我会收到一个错误:

int x = Int32.Parse (Console.ReadLine("Type any number:  "));
Run Code Online (Sandbox Code Playgroud)

如何让用户在C#中输入内容?

c# input console.readline

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