C :: Defining Array In One Function And Using It In The Next?
Nov 15, 2013
I'm trying to define a 7x5 array in main and then use it in a different function that will fill that array with random floats between 0.0 and 1.0 and then use main to print the final, filled array.
I am work on building a simple parse tree and the layout of my code look like this:
Headers pt_node.hiterator.hparsetree.h
Source files node.cppparsetree.cppmain.cpp
I am still relatively new to C++ , and have been advised to include function definition for the member function of both pt_node class and iterator class in the node.cpp file
I particular I have declare the following iterator.h:
This is a program I developed in which we had to define a class named BOOK with the data members and member functions as shown in the program..We have to:
(i) Make the user enter the values in the array BOOK. (ii) Display the details that the user entered. (iii) Search for a book from the array upon its Bno and display its details. (iv) Search for a book from the array upon its Bname and display its details.
PROGRAM:
#include<iostream.h> #include<conio.h> #include<stdio.h> #include<string.h> class BOOK { private: int Bno; char Bname[20];
[Code] .....
But while running it the compiler gives the errors as:
Line 43 to 48: Illegal character '' (0x5c) Line 69: Undefined symbol 'Display' Line 88: 'BOOK::Bno' is not accessible. Line 89:'BOOK::Bname' is not accessible. Line 90:'BOOK::Author' is not accesible. Line 91:'BOOK::Price' is not accesible. Line 108:'BOOK::Bno' is not accessible. Line 109:'BOOK::Bname' is not accessible. Line 110:'BOOK::Author' is not accesible. Line 111:'BOOK::Price' is not accesible. from 43 to 48..the line feed was also used at many other places but there it was not given as an error so why here? Line 69: I defined the Display() function outside the class since it contained control structures, so what's the error then?
About the lines the rest of the error( the "not accessible" ones) I know these data members are not accessible because they are in private visibility mode. But then how to make them accessible? (Without putting them in public because it was a part of the question to create the data members in private).
Basically, I have made a program which implements the platform specific layers (such as entry function, file loading, timing functions etc.) that gets compiled into a .exe (or platform equivalent).
But I want to make this portable and reusable across other projects, so the entry function for the platform will call the function "AppMain" which is the generic main function that is not reliant on the underlying platform etc. (i.e defined in a .h file that the project module will implement).
Ideally I would want to build the AppMain code into its own library. However, This AppMain code would want access to the Platform functions such as the functions compiled into the .exe.
This has confused me somewhat and has forced me to build both the AppMain module and the Platform Code into the same exe file so they can use each others functions.
Is there any way I can create a header file (with all the function prototypes in) but they do not get implemented in the Platform code but rather they can be 'guaranteed' to be available at runtime?
Here is what I am trying to achieve in a high level view:
win32layer.cpp: (implements all the functions defined in Platform.h)
in this scenario of course I could not compile the platform functions as the application has not been created and thus appmain cannot call the platform functions because that has not been created etc....
I am trying to create a small set of filepath functions that I intend to compile across linux and windows (I prefer not to use a big library). I want to have a global constant PATH_SEPARATOR that depends on the OS environment. This is what I set at the top of header file.
Code:
#include <stdio.h> const char PATH_SEPARATOR = #ifdef _WIN32 ''; #else '/'; #endif I was hoping to test this while compiling this in a linux environment using gcc, thusly:
Code:
int main (int argc, char const* argv[]) }
[code]....
where apparently, I seem not to be able to "set" a part of the code to have "_WIN32" defined. I don't know if I explained this clearly.
if ( creal(phi[i]) < 0.0 ) i_phi [i] = 0.0; if ( creal(phi[i]) > 1.0) i_phi [i] = 1.0; }
[Code]....
Printed numbers are showing a lot of fluctuation around limits eg, 1.00542, 1.0002 and -2.45829e-12.
I really have no idea why the limits are not applied for a lot of cells but my guess is that it's a problem from the CREAL function. Also I've changed the CREAL with __REAL__ but still the same problem shows up.
Say I have two projects A and B. A depends on B. If project A defines a macro to be 100 and project B defines the same macro to be 200. In project A, if I use this macro, what value would this macro be? Let's just forget macro is evil for the time being. Let's also forget that it is not good to define the same macro twice for the time being.
I am looking at functions still and can't see the point in declaring the function at the top of the program, and then defining later i.e.
Code: #include <iostream> int add (int x, int y) { return x + y;
[Code] .....
I obviously don't have much real world experience with this and am interested to see where declaring and defining later would be useful and/or beneficial.
Programe #1 // file.h class File { public: static const int var = 9; };
[Code]....
Program#1 is running fine, but program#2 gives linker error:
error LNK2005: "int GlobalVar" (?x@@3HA) already defined in file.obj
I know the header files are never compiled. Then in the above case, how the compiler knows the definition of variable var, but not able to find the definition of GlobalVar? What is the difference between this two programs?
I have an abstract class called Mbase and from it derived two classes: Sparse and Dense. Now I have an array in which its elements can be either Sparse or Dense. So, I delcared the array to have pointers to Mbase class. For example:
PHP Code: Mbase** A; Sparse* A1 = new Sparse; Dense* A2 = new Dense; A[1] = dynamic_cast<Mbase*>(A1); A[2] = dynamic_cast<Mbase*>(A2);
Now, I have operator + defined in Sparse and Dense. but when I do
PHP Code:
A[1]+A[2]
I get that operator + is not defined for Mbase class. So, I tried to define it in the Mbase class
However, the last code does not compile complaining that it cannot declare a class of type abstract in Mbase operator +(Mbase A). I think this is because I am returning Mbase instance.
I am currently stuck on what I should do next in a program I am working on. These are my instructions:
Design, implement, and test a class for storing integer arrays "safely". The array should be able to hold any number of integers up to 100.
In the class header file "SafeArray.h" students must define the class and specify the constructor/destructor functions, the public methods and private variables. In the class implementation file "SafeArray.cpp" students must implement the following operations:
constructor - to initialize the object. copy constructor - to copy an object. destructor - to delete the object. set - allow the user to set a value of the array at a particular location. get - allow the user to get a value of the array at a particular location. print - print out the array. add - add the elements of one array to another. subtract - subtract the elements of one array from another.
The output of my program is suppose to look like this:
Set q1: 2, 3, 4 Print q1: 2, 3, 4
Set q2: 1, 4, -2 Print q2: 1, 4, -2
Add q2 to q1
Print q1: 3, 7, 2 Get q1 at 1: 7
Here is the code I have so far.
*main.cpp*
#include <iostream> #include "SafeArray.h" using namespace std; int main() {
I'm struggling a bit to combine templates and operator overloading.
I'm writing a program that will be able to perform various matrix arithmetic at the end. However I'm stuck at the overloaded << and >> functions. I've defined them as I'm used to, without working with templates, however they are incorrect as I have defined them, and I'm not sure how to fix it.
I want to overload the stream insertion operator >> to read matrix data from either the keyboard or a file stream. I want to use >> to input a 3 x 3 matrix stored in a text file in the following format:
2 4 3 5 2 3 7 1 0
And similarly I want to overload the stream extraction operator << to output a matrix to the screen or file in the following format:
3 2 -1 1 -1 2 2 3 -1
Here is my work so far:
matrix.h
#ifndef MATRIX_H #define MATRIX_H #include <cassert> #include <iostream> using namespace std; template <class T> class Matrix;
#include "stdafx.h" #include <iostream> #include <math.h> using namespace std; class Calc {
[Code] ....
when i built it, it showed the following errors:
1>------ Build started: Project: rough, Configuration: Debug Win32 ------ 1> rough.cpp 1>e:c programs ough ough ough.cpp(17): error C3872: '0xa0': this character is not allowed in an identifier 1>e:c programs
I am currently having problems with defining an array of objects. I am getting 'redeclared as different kind of symbol' error message. The code is below
//MissionPlan.cpp #include <iostream> #include <string> #include "MissionPlan.h" #include "PointTwoD.h" using namespace std; //MissionPlan class implementation
If I DEFINE a global variable in two source files which belong to the same project, then there is a linker error "multiply defined symbols". But if I DEFINE a global variable in two source files which belong to the different projects, then it compiles fine. Why?
The question is: Define the class Counter. An instance of this class is used to count things, but the counter should never be less than 0 (non negative number). The member variable should be private. I realize what I'm suppose to be using but can't implement the member functions needed..
int main(){ int value; cin >> value; Counter myCounter(value); for (int i = 1; i <= MAXLOOP; i++) { myCounter.increment();
I want to use one median function "selectfunction" to choose one of the 2 other functions at random to pass my 2-dim array to the selected function. There is a problem in the median function
#include <iostream> #define random(x)(rand()%x) // for random number between numbers of 0 and 1 using namespace std; void proc1 (int iArray[][2]); void proc2 (int iArray[][2]); void selectfunction(int iArray[][2]); int A[4][2] = {{1, 2} , {3, 4} , { 5, 7} , {8, 1} };
im trying to read in 1 array and get 2 as outputs from 3 different functions.my read array is easy enough were im getting confused is how to read that array, separate it and take out only the parts i want and place them into a 2nd, then again a 3rd array.i have the following so far:
this compiles without a complaint, but when i go to run it no longer responds after taking the 10th element (well 9th if counting from 0).I think i have the if correct for the even odd section, but when i try to populate B or C array with the output of that if statement from A is were i think things are dying...