如何在C ++项目中声明全局变量?

h20poloman

我有两个矩阵作为全局变量。但是,当我运行项目时,在xCode中出现了一个Apache Mach-O链接器错误,该错误表明我的全局变量被声明了多次。我确定问题出在我的全局变量的位置和头文件的导入。

我的svd.h在这里:

#ifndef __netflix_project__svd__
#define __netflix_project__svd__

#include <stdio.h>
#include "dataManager.h"

const float GLOBAL_AVG_SET1 = 3.608609;
const float GLOBAL_AVG_SET2 = 3.608859;

const int TOTAL_USERS = 458293;
const int TOTAL_MOVIES = 17770;

double **user_feature_table = new double *[TOTAL_USERS];
double **movie_feature_table = new double *[TOTAL_MOVIES];


void initialize(int num_features);
void train();
double predictRating(int user, int movie); 




#endif /* defined(__netflix_project__svd__) */

我的svd.cpp在这里:

#include "svd.h"



void initialize(int num_features) {

    for(int i = 0; i < TOTAL_USERS; i++) {

        user_feature_table[i] = new double[num_features];

        for(int k = 0; k < num_features; k++) {
            user_feature_table[i][k] = GLOBAL_AVG_SET2 / num_features;
        }
    }

    for(int i = 0; i < TOTAL_MOVIES; i++) {

        movie_feature_table[i] = new double[num_features];

        for(int k = 0; k < num_features; k++) {
            movie_feature_table[i][k] = GLOBAL_AVG_SET2 / num_features;
        }
    }
}

我的main.cpp看起来像这样:

#include <iostream>
#include "svd.h"






int main(int argc, const char * argv[]) {

    // Parse file and store test points as testPoint objects
    std::vector<testPoint*> dataSet = fillTestPoints();


    // Get global average of data set

    /*
    double avg = getGlobalAverage(dataSet);
    printf("%f", avg);
     */
    initialize(30);

    for(int i = 0; i < TOTAL_USERS; i++) {
        printf("%f\n", user_feature_table[i][0]);
    }

    return 0;
}

我之前遇到过这个问题,但是通过取出全局变量来解决了。但是,我确实需要优化此代码,并且使用全局变量是实现此目的的方法,因此我需要弄清楚这一点。谢谢!

团队

在头文件中,仅声明它们。

extern const float GLOBAL_AVG_SET1;
extern const float GLOBAL_AVG_SET2;

extern const int TOTAL_USERS;
extern const int TOTAL_MOVIES;

extern double **user_feature_table;
extern double **movie_feature_table;

在您的一个.cpp文件中,定义并初始化它们:

const float GLOBAL_AVG_SET1 = 3.608609;
const float GLOBAL_AVG_SET2 = 3.608859;

const int TOTAL_USERS = 458293;
const int TOTAL_MOVIES = 17770;

double **user_feature_table = new double *[TOTAL_USERS];
double **movie_feature_table = new double *[TOTAL_MOVIES];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C ++项目中声明全局变量?

来自分类Dev

全局变量是如何声明的?

来自分类Dev

C ++全局变量声明

来自分类Dev

如何在C中声明全局变量?

来自分类Dev

如何快速声明全局变量

来自分类Dev

如何在Visual Basic中声明全局变量?

来自分类Dev

如何在头文件中正确声明全局变量?

来自分类Dev

如何在Ruby on Rails中声明全局变量?

来自分类Dev

如何在PHP类中声明全局变量

来自分类Dev

如何在头文件中正确声明全局变量?

来自分类Dev

如何在MATLAB中声明静态和全局变量

来自分类Dev

如何在模块中声明全局变量

来自分类Dev

C ++如何区分对全局变量的调用和对全局变量的声明?

来自分类Dev

如何在Jenkins中声明全局变量并在每个单独项目的MSBuild任务中使用它

来自分类Dev

如何用全局变量声明全局数组的长度?

来自分类Dev

如何在“ C”中的任何函数内声明全局变量?

来自分类Dev

如何声明对导入的模块函数可见的全局变量

来自分类Dev

如何使用Python声明pySerial的全局变量

来自分类Dev

如何以正确的方式在javascript中声明全局变量?

来自分类Dev

如何将游标声明为全局变量

来自分类Dev

如何使用Angular Js声明全局变量?

来自分类Dev

在头文件或C源文件中声明全局变量

来自分类Dev

C ++:在标头中声明非全局变量?

来自分类Dev

extern“ C”全局变量上的extern声明

来自分类Dev

C ++项目:在哪里用函数定义全局变量

来自分类Dev

如何在python中实现C / C ++全局变量?

来自分类Dev

如何在ember-cli中声明jshint忽略的全局变量?

来自分类Dev

全局变量被多个函数更改-如何在Python中声明

来自分类Dev

Typescript-如何在node.js上声明全局变量

Related 相关文章

热门标签

归档