2014-11-12 4 views
0

Я пишу программу, которая вычисляет норму вектора (точечный продукт с собой). У меня нет проблем с реализацией кода, что я не могу сделать, это вызвать функцию из функции, отличной от основной.Множественные вызовы функций файлов C++

header.h

#ifndef HEADER 
#define HEADER 

void readArray(double [], int &); 
void printArray(double [], int &); 
void norm(double [], int &); 
double scalarProduct(double [], int &); 

#endif 

norm.cc

// norm.cc 
#include <iostream> 
#include <cmath> 
using namespace std; 

void norm(double array[], int & size) 
{ 
    double norm; 
    norm = sqrt(scalarProduct(array, size)); 

    cout << "Norm = " << norm << endl; 
} 

scalarProduct.cc

// scalarProduct.cc 
#include <cmath> 
double scalarProduct(double array[], int & size) 
{ 
    double ps = 0.0; 
    for(int i = 0; i < size; i++) 
    { 
     ps += pow(array[i], 2); 
    } 
} 

в main.cc файл я добавил строку

#include "header.h" 

и все функции, которые я вызываю из основной работы, как шарм, но вызов productScalar() из norm() не работает. Я добавил ту же строку #include "header.h", но компилятор говорит, что я не могу определить одну и ту же функцию более одного раза. Как я могу это решить?

+0

Вы могли бы хотеть иметь более близкий взгляд на то, как работает ООП: http://www.cplusplus.com/doc/tutorial/classes/ – NSimon

+0

я бы не пройти 'int 'к функции в качестве ссылки, если вы не измените ее значение. – tgmath

+0

Это должно сработать. Скажите, что вы подразумеваете под «не работает» и публикуете сообщение о точной ошибке от компилятора. (BTW: Вы забываете что-то вернуть из 'scalarProduct' и почему параметр размера является ссылкой?) – molbdnilo

ответ

0

Добавить #include "header.h" в norm.cc

+0

спасибо, это сработало. Я в замешательстве, потому что я уверен, что я это пробовал, но компилятор вернет ту же ошибку ... Я, должно быть, сделал что-то не так. –

Смежные вопросы