2015-03-06 2 views
-1

Я определил класс, а также функцию-член. И теперь я хотел бы вызвать тип данных (x.dat), импортированный извне. Как я мог это сделать?Как я могу вызвать тип данных из функции класса

Было бы что-то вроде этого:

class abs{ 
private: 
... 
public: 
... 
void function(data){  //here i would like to use the external data x.dat 
... 
} 
} 
+0

Что вы подразумеваете под словом "call" тип данных? Вы вызываете функции, а не типы. Что такое 'x'? Что такое 'dat'? –

+0

Вы говорите о загрузке данных из файла x.dat? –

+1

Извините, не о загрузке данных. функция публичного класса abs будет использовать данные загрузки. Я не знаю, как его использовать. где я должен загружать статические данные? нужны ли какие-либо указатели в «функции»? спасибо большое – Mike22LFC

ответ

1

Да, Кит правильно.

Что вы хотите, это статическая переменная, которая поддерживает одни и те же данные по всем объектам этого типа. Для этого вам необязательно нужна функция.

#include <iostream> 
#include <string> 
using namespace std; 

class abs 
{ 
private: 
public: 
    static double data[3]; 
}; 
double abs::data[3]={}; //instantiate the variable 

int main() { 
    abs::data[0]=5.0; 
    cout<<abs::data[0]; //outputs 5 
} 

Статические переменные связаны с определением класса, а не экземпляры объектов этого типа так, пока программа активна она будет храниться в памяти как часть класса.

+0

Мои данные хранятся в файле 'x.dat', а 'funtion' будет использовать данные в качестве параметра. Я не должен загружать данные (double) и как использовать в «функции (двойные данные)»? Спасибо – Mike22LFC

+0

Хорошо, позвольте мне изменить это, чтобы лучше подойти к тому, что вы ищете. – Mir

+0

Большое спасибо. Я стараюсь изо всех сил, чтобы быть ясным. Например, мои данные имеют тип double [10], я хочу загрузить только один раз, давая некоторые статические данные в классе «abs», чтобы другие функции-члены класса могли использовать его в качестве параметра. Скажите, пожалуйста, если вы меня не понимаете. вы очень добры, спасибо! – Mike22LFC

0

Во-первых, огромное спасибо всем вам, особенно @Mir Теперь я запускаю его, хотя я не знаю, почему кто-то дает мне отрицательный !?

Я хотел бы сделать резюме здесь, для себя и для будущих читателей.

Мой вопрос заключается в следующем:

У меня есть сохраненные данные (двойной [1000]), который представляет собой файл 'x.dat';

И я определяю класс 'abs' в файле заголовка, а также его функцию-функцию 'function';

И «функция» хотела бы назвать данные в качестве параметра ввода. Как это сделать?

С помощью Mir, теперь он работает, как это, надеюсь, это поможет кому-то:

1.abs.h

 #include <iostream> 
     #include <fstream> 
     #include <string> 
     using namespace std; 

     class abs 
     { 
     private: 
     public: 
      static double data[1000]; 
      double function(double xa[]){ 
        for(int i=0;i<1000;i++){ 
        res += xa[i] * 2.0; 
        } 
     return res; 
      } 
     }; 

2.abs.cpp

#include "abs.h" 

double abs::data[1000]={}; //instantiate the variable 

3.main.cpp

#include "abs.h" 

    int main() { 
    abs a = abs(); 
     for(int i = 0; i < 1000, i++){ 
      ifstream fs("x.dat") 
      fs >> abs::data[i]; 
      cout << abs::data[i]; //outputs all data 
     } 
    double Value = a.function(data); 
    cout<< Value<<endl; 
    } 
Смежные вопросы