在包含.cpp文件后首先在此处定义错误

时间:2016-06-06 13:05:02

标签: c++

我有以下两个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;
}

如果我尝试运行此代码,我会得到:

enter image description here

为什么会出现此错误?我不明白为什么编译器抱怨包含?我是C ++编程的初学者,对我来说一切都有点新鲜x)我知道我应该在包含中使用头文件,但我只是想尝试和学习语言:)

1 个答案:

答案 0 :(得分:2)

来自源文件中的

不要 #include "someNode.cpp"

您的编译器正在生成my_custom_function的多个副本,并且链接器不知道要选择哪一个。

使用标头文件,其中包含函数原型和类声明,并在必要时使用#include