C++ :: Functions - Declaring First And Defining Later In Program
Apr 6, 2013
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.
#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
Code: #include <iostream> #include <string> using namespace std; class test{ public: virtual void ola() {
[Code] .....
Like you see, i don't re-declare the 'ola' function in 'test1' class, only in 'test' class. The compiler tell me the 'ola' isn't member of 'test1'. in 'test' i put it 'virtual', but forgetting that, how can i override it without re-declare it?
i'm facing some problems with the array, as I have my .h and .cpp files so do i declare them as per norm of how we usually declare a function?
pointtwod.h class PointTwoD { private: int xcord,ycord; float civIndex; LocationData locationdata;
[Code] ....
when i compile the error message i get was even when i i put in int xord[]; in my PointTwoD.h file:
PointTwoDImp.cpp:99:6: error: prototype for 'void PointTwoD::storedata(int*,int*,float*) does not match any in class 'PointTwoD'
PointTwoD.h:48:8: error: candidate is: void PointTwoD::storedata(int, int, float)
PointTwoDImp.cpp: 135:22: error: 'xord' was not declared in this scope PointTwoDImp.cpp: 135:27: expected primary-expression before ']' token PointTwoDImp.cpp: 135:30: error: 'yord' was not declared in this scope PointTwoDImp.cpp: 135:35: expected primary-expression before ']' token PointTwoDImp.cpp: 135:38: error: 'civ' was not declared in this scope PointTwoDImp.cpp: 135:42: expected primary-expression before ']' token
I am new to C. I've been trying to use C to code some statistical functions originally coded in R. I've encountered an interesting phenomenon. In the function foo1, I declared the array v1v2b using an actual value 1999000. The function runs fine when I call it in R.
Code: void foo1(double *x, double *y, int *nsamp){ int i, j, k, oper=2, l; double* v1v2=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1)); outer_pos(x, y, nsamp, &v1v2[0]); double v1v2b[1999000]; //<-------HERE for(i=1; i<= 1999000]; i++){ v1v2b[i-1]=1; } }
However, in foo2, I first create an integer variable called index, and store the value 1999000 in it. I then use it to initialize the same array. When I tried calling this function in R, it either led to a stack overflow error, or completely crashed R.
Code: void foo2(double *x, double *y, int *nsamp){ int i, j, k, oper=2, l; double* v1v2=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
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.
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.
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 getting an error on lines 31 and 36 about an expected identifier on my program that computes area and circumference. Is something wrong with my external functions outside of main?
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:
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.
Is there a program that can remove the functions in a program by preprocessing
Code:
#include<stdio.h> int is_even(int number); int main(void) { if(is_even(number)) { printf("%d is even", number); } }
[Code]...
To something like
Code:
#include<stdio.h> int is_even(int number); int main(void) { if( number%2 ==0 ) { printf("%d is even", number); } }
I use the "-E" option when compiling with gcc on linux but its output still contains funcitons. Is there a preprocessing program that can remove functions from a program?
I have to make a numerical integration program, how I can write my code so that the user is able to write their own function that they want to integrate?
E.g. they would see the message: 'please enter your function' and would be able to write whatever they wanted e.g. 'x +5' then this would then be integrated by the program.
I have already written a program that can integrate a known function but would prefer that the user could choose their own.
I'm writing a program to check whether codes from a file are invalid, valid, inactive, or valid and active, but can't get it to work properly. The invalid codes are being found, but the other three are not. I think it may have something to do with my "active" function.
We have been assigned to create a program that uses multiple functions. The professor has given us code for two of the functions, one to open a file and then another one to read the files contents and output them. I have put these into my program but they will not execute. The program does run, but the functions themselves are not executing. I have practiced with other functions that contain no parameters and those run fine, but the functions she gave us have multiple parameters.
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;
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