我有以下两个c ++文件:
somNode.cpp:
#include <random>
#include <iostream>
#include <chrono>
/*
* This class represent a node in the som-grid
*/
class somNode
{
private:
// Weight of the node representing the color
int nodeWeights[3];
// Position in the grid
double X, Y;
// corner coorinates for drawing the node on the grid
int top_Left, top_Right, bottom_Left, bottom_Right;
public:
// Constructor
somNode(int tL, int tR, int bL, int bR)
{
top_Left = tL;
top_Right = tR;
bottom_Left = bL;
bottom_Right = bR;
}
};
void my_custom_function(int nodeWeights[])
{
// construct a trivial random generator engine from a time-based seed:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator (seed);
std::uniform_int_distribution<int> distribution(0,255);
for(int i=0; i<3; i++)
{
nodeWeights[i] = distribution(generator);
}
}
和main.cpp:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "somNode.cpp"
using namespace std;
int main ()
{
return 0;
}
如果我尝试运行此代码,我会得到:
为什么会出现此错误?我不明白为什么编译器抱怨包含?我是C ++编程的初学者,对我来说一切都有点新鲜x)我知道我应该在包含中使用头文件,但我只是想尝试和学习语言:)
答案 0 :(得分:2)
不要 #include "someNode.cpp"
。
您的编译器正在生成my_custom_function
的多个副本,并且链接器不知道要选择哪一个。
使用标头文件,其中包含函数原型和类声明,并在必要时使用#include
。