c++ - 问题:我想执行一个代码,但它的一部分在另一个文件夹中
问题描述
下面的代码是 21Templates.cpp
#include <iostream>
#include "Stack.h"
#include <string>
using namespace std;
int main(int argc, char* argv[]){
Stack<string> p(100);
p.push("python");
p.push("haskell");
p.push("C++");
//p.desempilhar();
if(p.isEmpty())
cout << "Pilha vazia!\n";
else
cout << "Pilha NAO vazia!\n";
if(!p.isEmpty())
cout << "Topo: " << p.peek() << endl;
else
cout << "A pilha esta vazia!!\n";
return 0;
}
下面的代码是 Stack.h:
#ifndef __STACK_H_
#define __STACK_H_
#include <iostream>
using namespace std;
/*
Declarando a criação de um template para classe Stack.
Stack aqui é um template, não uma classe propriamente dita.
Ao ser declarada da maneira correta se torna uma classe de fato.
*/
template <class T>
class Stack {
private:
int top;
T* a;
int MAX;
public:
Stack(int MAX);
bool push(T x); //Adiciona um T a stack.
bool pop(); //Remove o T mais acima da stack.
int peek(); //Retorna o T mais acima da stack.
bool isEmpty();
};
//Declarando uso de um template. template <class T>
template <class T>
//"Stack<T>" é uma classe baseada no "template <class T>".
Stack<T>::Stack(int MAX){
a = new T(MAX);
top = -1;
this->MAX = MAX;
}
//Declarando uso de um template. template <class T>
template <class T>
//"Stack<T>" é uma classe baseada no "template <class T>".
bool Stack<T>::push(T x) {
if (top >= (MAX - 1)) {
cout << "Stack Overflow" << endl;
return false;
} else {
a[++top] = x;
cout << x << " pushed into stack" << endl;
return true;
}
}
//Declarando uso de um template.
template <class T>
//"Stack<T>" é uma classe baseada no "template <class T>".
bool Stack<T>::pop() {
if (top < 0) {
cout << "Stack Underflow" << endl;
return false;
}
else {
cout << a[top--] << " Popped from stack" << endl;
return true;
}
}
//Declarando uso de um template.
template <class T>
//"Stack<T>" é uma classe baseada no "template <class T>".
int Stack<T>::peek() {
if (top < 0) {
cout << "Stack is Empty" << endl;
return 0;
} else {
return a[top];
}
}
//Declarando uso de um template.
template <class T>
//"Stack<T>" é uma <<classe baseada no "template <class T>".
bool Stack<T>::isEmpty() {
return (top < 0);
}
#endif
好吧,一部分代码在:home/matheus/Codes/C++/Aulas,另一部分在:home/matheus/Codes/C++/EstruturaDeDados。
我正在尝试用以下方式编译它:g++ -o 21Templates 21Templates.cpp /home/matheus/Codes/C++/EstruturaDeDados/Stack.h
(请记住,我已经在 home/matheus/Codes/C++/Aulas 中打开了 cmd,其中 21Templates.cpp 所在的位置。)
我如何在不收到错误的情况下执行此操作:
21Templates.cpp:2:10:致命错误:Stack.h:存档或目录不存在
#include “堆栈.h”
^~~~~~~~~
编译终止。
???
解决方案
由于您在代码中执行此操作,因此必须在编译时使用该选项#include "Stack.h"
添加您放置的目录:Stack.h
-I
g++ -I /home/matheus/Codes/C++/EstruturaDeDados -o 21Templates 21Templates.cpp
推荐阅读
- javascript - 反应钩子几次调用和 setState 其他值
- spring-boot - 如何为自动生成的 ID 执行 findById
- azure - Azure Blob 快照未通过逻辑应用删除
- reporting-services - SSRS 矩阵的“组”列中的分页符
- seo - 如何在 WooCommerce 中编辑我的类别标题 (h1) 以在标题后添加页码?
- python - Python 3.8.5 urllib.error.HTTPError:HTTP 错误 403:禁止
- elasticsearch - 减小可视化大小后丢失结果
- excel - 即使行数发生变化,如何通过电源查询编辑器引用加载表上的单元格?
- xml - 在 XSLT 版本 1 中是否可以通过键连接 2 个 xml 文件但输入中没有它们?
- c# - Blazor 中的自定义 InputFile