我知道之前已经提出了类似的问题,但在做完我的研究之后,我仍然对循环标题包含问题.
//FooA.h
#ifndef H_FOOA
#define H_FOOA
#include "foob.h"
class FooA{
public:
FooB *fooB;
};
//FooB.h
#ifndef H_FOOB
#define H_FOOB
class FooA;
class FooB{
public:
FooA *fooA;
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我有两个循环依赖项,这就是我在stackoverflow上看到人们解决问题的方式.我唯一的问题是在我的main.cpp中我必须先包含fooa.h然后再包含foob.h
//main.cpp the right way
#include "fooa.h"
#include "foob.h"
//main.cpp that will surely get a compile error
#include "foob.h"
#include "fooa.h"
Run Code Online (Sandbox Code Playgroud)
现在我的问题是"有没有办法以某种方式转发声明这些类,这将使我不关心我在main.cpp中包含头文件的顺序?"
我试图通过ssh-ing进入我的服务器和使用屏幕打开多个会话,与我的开发服务器建立多个连接.我的问题是,当我在屏幕上运行nvm命令时,找不到命令.当我退出屏幕并在纯ssh终端中运行命令时它运行正常.我认为这是一个PATH问题.我想获得nvm的绝对路径,看看我是否可以在屏幕上运行它.
我运行下面的代码来找到路径
~$ nvm
//SHOWS USAGE INFO
~$ whereis nvm
nvm:
~$ screen
//LOADS INTO SCREEN SESSION
~$ nvm
bash: nvm: command not found
Run Code Online (Sandbox Code Playgroud)
这对于安装nvm意味着什么.如果我更改其安装目录,我可以在屏幕上运行它.如果是这种情况,那么为什么不首先屏幕运行nvm.
我知道模板的重点是概括你的代码,但我希望该类的一个特定成员函数根据创建的对象类型做出不同的反应.具体来说,我创建了一个类字典,用于创建DictionaryNoun或DictionaryAdjective对象.我有一个Dictionary :: print(),我希望有一个代码结构如下:
Dictionary::print(){
if(this is a Dictionary<Noun> object){
// Print my nouns in some special way
}
if(this is a Dictionary<Adjective> object){
// Print my adjectives in some special way
}
else{ //Print objects in default way}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何对我的对象进行类型检查?