gpt4 book ai didi

c++ - 为什么我的 C++ 代码在我尝试编译时不断返回 'undefined reference to' 我的构造函数之一?

转载 作者:行者123 更新时间:2023-11-30 03:33:22 26 4
gpt4 key购买 nike

一段时间以来,我一直在尝试编译我的代码。一直在网上寻找解决我的问题的方法,但我没有找到。一些帮助将不胜感激。

以下是我拥有的一些文件:

门.h

#ifndef GATE_H
#define GATE_H

#include <vector>

class Gate {
private:
std::vector<int> inWires, outWires;
char function;
public:
Gate (char function, const std::vector<int>& inputWires, const std::vector<int>& outputWires);
};

#endif

门.cpp

#include "gate.h"

Gate::Gate (char functionality, const std::vector<int>& inputWires, const std::vector<int>& outputWires) {
function = functionality;
inWires = inputWires;
outWires = outputWires;
}

电路文件读取器.h

#ifndef CIRCUIT_FILE_READER_H
#define CIRCUIT_FILE_READER_H

#include <string>
#include <iostream>
#include <vector>
#include "circuit.h"
#include "gate.h"

Circuit readCircuit(std::string filename);

#endif

电路文件读取器.cpp

#include "circuit_file_reader.h"

Circuit readCircuit (std::string filename) {
std::vector<int> iw (1, 7);
std::vector<int> ow (1, 8);
Gate g0 ('a', iw, ow); // This is the problem
std::vector<Gate> gates;
// gates.push_back (g0);
return Circuit (gates, 0);
}

test_circuit_file_reader.cpp

#include <iostream>
#include <string>
#include "circuit_file_reader.h"

int main(int argc, char** argv) {
readCircuit("");
std::cout << "Test Worked!" << std::endl;
return 0;
}

每当我尝试编译这段代码时,我的编译器都会返回

circuit_file_reader.cpp:(.text+0xa5): undefined reference to `Gate::Gate(char, std::vector<int, std::allocator<int> > const&, std::vector<int, std::allocator<int> > const&)'                                                       collect2: error: ld returned 1 exit status 

这很奇怪,因为已经定义了 Gate 构造函数,为什么它看不到它?

最佳答案

您在头文件中声明了头,但它的定义位于源 (.cpp) 文件中。您没有向编译器指定它。您没有指定您使用什么来编译,但如果您正确编译所有源文件,那么它应该可以工作。这是使用 g++ 的示例。

您没有提供编译程序所需的 circuit.h 文件,所以我制作了一个虚拟文件以便它可以编译。

编辑:我被要求删除图片,所以这里是文本中的 g++ 命令。

g++ circuit_filer_reader.cpp gate.cpp main.cpp -o test
./test
Test Worked!

如果出于某种原因有人想在这里编译它,这里是虚拟 circuit.h 文件。

#include "gate.h"
struct Circuit
{
Circuit(std::vector<Gate> gates, int test)
{
return;
}
};

关于c++ - 为什么我的 C++ 代码在我尝试编译时不断返回 'undefined reference to' 我的构造函数之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43020540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com