- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 C++ 的新手,从 Java 切换到我正在上大学的类(class)。在我们的第一个任务中,我们必须为我们的代码编写几个 makefile。我的第一个 makefile 不工作——它总是提示“TempControlTest 中的错误:对‘BangBangControl::XXXX’的 undefined reference ,其中 XXXX 是 BangBangControl 中的一个函数(我在 BangBangControl 中的每个函数都出错)。我一直在寻找在网上,所有的 makefile 示例看起来都略有不同,所以我不知道我做错了什么。我会在下面发布我的所有代码,如果有人能给我一点帮助,那就太棒了。另外,这个今晚到期,所以非常感谢任何快速帮助。如果你还在这里,非常感谢!
HeatingUnit.h:
#ifndef HEATINGUNIT_H
#define HEATINGUNIT_H
class HeatingUnit {
private:
bool on;
int temp;
public:
HeatingUnit(bool o, int t);
void turnOn();
void turnOff();
int tick();
};
#endif
HeatingUnit.cpp:
#include "HeatingUnit.h"
HeatingUnit::HeatingUnit(bool o, int t) {
on = o;
temp = t;
}
void HeatingUnit::turnOn() {
on = true;
}
void HeatingUnit::turnOff() {
on = false;
}
int HeatingUnit::tick() {
if(on) return ++temp + 1;
else return --temp;
}
BangBangControl.h:
#ifndef BANGBANGCONTROL_H
#define BANGBANGCONTROL_H
#include "HeatingUnit.h"
class BangBangControl {
private:
int tempToKeep;
HeatingUnit unit;
public:
BangBangControl(int ttk, bool on, int initTemp);
void setTemp(int t);
int getTemp();
void update();
};
#endif
BangBangControl.cpp:
#include "HeatingUnit.h"
#include "BangBangControl.h"
BangBangControl::BangBangControl(int ttk, bool on, int initTemp)
: unit(on, initTemp) {
tempToKeep = ttk;
}
void BangBangControl::setTemp(int t) {
tempToKeep = t;
}
int BangBangControl::getTemp() {
return tempToKeep;
}
void BangBangControl::update() {
int currentTemp = unit.tick();
if(currentTemp > tempToKeep + 2) unit.turnOff();
else if(currentTemp < tempToKeep - 2) unit.turnOn();
}
TempControlTest.cpp:
include <iostream>
#include "BangBangControl.h"
using namespace std;
int main() {
BangBangControl bang(100, false, 60);
for(int i = 0; i < 50; i++) {
bang.update();
cout << bang.getTemp() << " ";
if(i % 10 == 9) cout << endl;
}
}
最后,Makefile_Executable:
all: TempControlTest
TempControlTest: TempControlTest.cpp BangBangControl.o
g++ -o TempControlTest TempControlTest.cpp
BangBangControl.o: BangBangControl.cpp HeatingUnit.o
g++ -c BangBangControl.cpp
HeatingUnit.o: HeatingUnit.cpp
g++ -c HeatingUnit.cpp
clean:
rm -rf *.o TempControlTest
再次感谢您!
最佳答案
您没有将您的对象连接在一起。
你有两行编译 BangBangControl.cpp
和 HeatingUnit.cpp
到两个 .o
文件(尽管我怀疑您是否需要让 BangBangControl.o
依赖于 HeatingUnit.o
)。但是您需要将它们一起放入最终的可执行文件中(这称为“链接”)。
TempControlTest: TempControlTest.cpp BangBangControl.o HeatingUnit.o
g++ -o TempControlTest TempControlTest.cpp HeatingUnit.o BangBangControl.o
在上面的行中,TempControlTest.cpp
将被编译,然后与它似乎依赖的两个已编译对象链接在一起成为一个可执行文件。
注意:当您收到“ undefined reference ”错误时,这通常意味着您的代码可以正常编译,但缺少需要链接的符号。
NB2:您的 makefile 规则不会导致 cpp 文件依赖于它们使用的 header 。这意味着当您更改 header 并运行“make”时,make 会告诉您所有内容都已构建。这很糟糕。
关于c++ - 我的 makefile 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123269/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!