Search Results

Search found 1621 results on 65 pages for 'cout'.

Page 47/65 | < Previous Page | 43 44 45 46 47 48 49 50 51 52 53 54  | Next Page >

  • More elegant way to make a C++ member function change different member variables based on template p

    - by Eric Moyer
    Today, I wrote some code that needed to add elements to different container variables depending on the type of a template parameter. I solved it by writing a friend helper class specialized on its own template parameter which had a member variable of the original class. It saved me a few hundred lines of repeating myself without adding much complexity. However, it seemed kludgey. I would like to know if there is a better, more elegant way. The code below is a greatly simplified example illustrating the problem and my solution. It compiles in g++. #include <vector> #include <algorithm> #include <iostream> namespace myNS{ template<class Elt> struct Container{ std::vector<Elt> contents; template<class Iter> void set(Iter begin, Iter end){ contents.erase(contents.begin(), contents.end()); std::copy(begin, end, back_inserter(contents)); } }; struct User; namespace WkNS{ template<class Elt> struct Worker{ User& u; Worker(User& u):u(u){} template<class Iter> void set(Iter begin, Iter end); }; }; struct F{ int x; explicit F(int x):x(x){} }; struct G{ double x; explicit G(double x):x(x){} }; struct User{ Container<F> a; Container<G> b; template<class Elt> void doIt(Elt x, Elt y){ std::vector<Elt> v; v.push_back(x); v.push_back(y); Worker<Elt>(*this).set(v.begin(), v.end()); } }; namespace WkNS{ template<class Elt> template<class Iter> void Worker<Elt>::set(Iter begin, Iter end){ std::cout << "Set a." << std::endl; u.a.set(begin, end); } template<> template<class Iter> void Worker<G>::set(Iter begin, Iter end){ std::cout << "Set b." << std::endl; u.b.set(begin, end); } }; }; int main(){ using myNS::F; using myNS::G; myNS::User u; u.doIt(F(1),F(2)); u.doIt(G(3),G(4)); } User is the class I was writing. Worker is my helper class. I have it in its own namespace because I don't want it causing trouble outside myNS. Container is a container class whose definition I don't want to modify, but is used by User in its instance variables. doIt<F> should modify a. doIt<G> should modify b. F and G are open to limited modification if that would produce a more elegant solution. (As an example of one such modification, in the real application F's constructor takes a dummy parameter to make it look like G's constructor and save me from repeating myself.) In the real code, Worker is a friend of User and member variables are private. To make the example simpler to write, I made everything public. However, a solution that requires things to be public really doesn't answer my question. Given all these caveats, is there a better way to write User::doIt?

    Read the article

  • functor returning 0

    - by Jon
    I've recently started teaching myself the standard template library. I was curious as to why the GetTotal() method in this class is returning 0? ... class Count { public: Count() : total(0){} void operator() (int val){ total += val;} int GetTotal() { return total;} private: int total; }; void main() { set<int> s; Count c; for(int i = 0; i < 10; i++) s.inset(i); for_each(s.begin(), s.end(), c); cout << c.GetTotal() << endl; }

    Read the article

  • pass by pointer is not working

    - by user323422
    #include"iostream" class CMessage { public:int a; CMessage(){} ~CMessage(){} }; void Testing(CMessage *f_pMessage)//l_pMessage is output parameter { f_pMessage = new CMessage(); f_pMessage->a = 1; } int main() { CMessage *l_pMessage =NULL; Testing(l_pMessage); std::cout<<l_pMessage->a;//getting l_pMessage = NULL; return 0; } when i called testing then inside testing f_pMessage is getting intialize but as ssoon as i after excuting testing function it should be store in l_Pmessage but it is showing NULL.confussed.....

    Read the article

  • How to free memory in try-catch blocks?

    - by Kra
    Hi, I have a simple question hopefully - how does one free memory which was allocated in the try block when the exception occurs? Consider the following code: try { char *heap = new char [50]; //let exception occur here delete[] heap; } catch (...) { cout << "Error, leaving function now"; //delete[] heap; doesn't work of course, heap is unknown to compiler return 1; } How can I free memory after the heap was allocated and exception occurred before calling delete[] heap? Is there a rule not to allocate memory on heap in these try .. catch blocks? Thanks

    Read the article

  • Can I use vector as index in map structure in c++?

    - by tsubasa
    I attempted to do something like this but it does not compile: class point { public: int x; int y; }; int main() { vector<point> vp1; vector<point> vp2; vector<point> vp3; map < vector<point>, int > m; m[vp1] = 1; m[vp2] = 2; m[vp3] = 3; map < vector<point>, int >::iterator it; for (it=m.begin(); it!=m.end(); it++) { cout<<m[it->first]<<endl; } return 0; }

    Read the article

  • How do I output the preorder traversal of a tree given the inorder and postorder tranversal?

    - by user342580
    Given the code for outputing the postorder traversal of a tree when I have the preorder and the inorder traversal in an interger array. How do I similarily get the preorder with the inorder and postorder array given? void postorder( int preorder[], int prestart, int inorder[], int inostart, int length) { if(length==0) return; //terminating condition int i; for(i=inostart; i<inostart+length; i++) if(preorder[prestart]==inorder[i])//break when found root in inorder array break; postorder(preorder, prestart+1, inorder, inostart, i-inostart); postorder(preorder, prestart+i-inostart+1, inorder, i+1, length-i+inostart-1); cout<<preorder[prestart]<<" "; } Here is the prototype for preorder() void preorder( int inorderorder[], int inostart, int postorder[], int poststart, int length)

    Read the article

  • How to get Drive Letter Using WMI

    - by new
    i get the vid and pid of the usb devices plugged into my system using WMI. Now i want to get the drive letter corresponding to the device vid and pid i retrievd. code hres = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECT * FROM Win32_USBControllerDevice"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(pclsObj->Get(L"Dependent", 0, &vtProp, 0, 0))) { cout<<"The specified property is not found."<<endl; } else { wcout <<vtProp.bstrVal << endl; } i get like below \NJ96\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_1A8D&PID_1000\35809402 0874450" how can i map DRIVE LETTER to my above output using the WMI please help me out

    Read the article

  • Avoid warning 'Unreferenced Formal Parameter'

    - by bdhar
    I have a super class like this: class Parent { public: virtual void Function(int param); }; void Parent::Function(int param) { std::cout << param << std::endl; } ..and a sub-class like this: class Child : public Parent { public: void Function(int param); }; void Child::Function(int param) { ;//Do nothing } When I compile the sub-class .cpp file, I get this error warning C4100: 'param' : unreferenced formal parameter As a practise, we used to treat warnings as errors. How to avoid the above warning? Thanks.

    Read the article

  • C++ Detecting ENTER key pressed by user

    - by user69514
    I have a loop where I ask the user to enter a name. I need to stop when the user presses the ENTER key..... or when 20 names have been entered. However my method doesn't stop when the user presses the ENTER key //loop until ENTER key is entered or 20 elements have been added bool stop = false; int ind = 0; while( !stop || ind >= 20 ){ cout << "Enter name #" << (ind+1) << ":"; string temp; getline(cin, temp); int enterKey = atoi(temp.c_str()); if(enterKey == '\n'){ stop = true; } else{ names[ind] = temp; } ind++; }

    Read the article

  • Constructor Type Coercion in C++

    - by Robert Mason
    Take the following class: class mytype { double num; public: mytype(int a) { num = sqrt(a); } void print() { cout << num; } } Say there is a method which takes a mytype: void foo(mytype a) { a.print(); } Is it legal c++ (or is there a way to implement this) to call foo(4), which would (in theory) output 2? From what I can glean you can overload type casts from a user defined class, but not to. Can constructor do this in a standards-compliant manner (assuming, of course, the constructor is not explicit). Hopefully there is a way to in the end have this legal: int a; cin >> a; foo(a); Note: this is quite obviously not the actual issue, but just an example for posting purposes. I can't just overload the function because of inheritance and other program-specific issues.

    Read the article

  • What's wrong with the following code ?

    - by dada
    #include <iostream> #include <string> using namespace std; int main(void) { string a; cin>>a; a.erase(a.end()-1); a.erase(a.begin()+1); string ge = "oae"; a.insert(a.begin()+1, ge); cout<<a<<endl; return 0; } It doesn't compile and i don't know why. Can you tell me what's wrong

    Read the article

  • Difference between debug and release.

    - by atch
    Why when I'm debugging in debug mode everything in code below works as suppose to but when I switch to release I'm getting strange result? void say_hello(int argc, char* argv[])//In release mode argc has different values from 124353625 to 36369852 <include iostream> { std::cout << "In say_hello()\n"; } int main(int argc, char* argv[]) { say_hello(3,argv);//when instead of literal I enter "argc" everything is ok. return 0; } Thanks for help.

    Read the article

  • Returning a local object from a function

    - by pocoa
    Is this the right way to return an object from a function? Car getCar(string model, int year) { Car c(model, year); return c; } void displayCar(Car &car) { cout << car.getModel() << ", " << car.getYear() << endl; } displayCar(getCar("Honda", 1999)); I'm getting an error, "taking address of temporary". Should I use this way: Car &getCar(string model, int year) { Car c(model, year); return c; }

    Read the article

  • Is incrementing in a loop exponential time?

    - by user356106
    I've a simple but confusing doubt about whether the program below runs in exponential time. The question is : given a +ve integer as input, print it out. The catch is that you deliberately do this in a loop, like this: int input,output=0; cininput; while(input--) ++output; // Takes time proportional to the value of input cout<< output; I'm claiming that this problem runs in exponential time. Because, the moment you increase the # of bits in input by 1, the program takes double the amount of time to execute. Put another way, to print out log2(input) bits, it takes O(input) time. Is this reasoning right?

    Read the article

  • Why is my implementation of strcmp not returning the proper value?

    - by Avanish Giri
    Why is this printing out 0 back in main but 6 when it is inside of the strcmp function? 7 int main() 8 { 9 char* str = "test string"; 10 char* str2 = "test strong"; 11 //printf("string length = %d\n",strlen(str)); 12 13 int num = strcmp(str,str2); 14 15 printf("num = %d\n",num); 16 } 29 int strcmp(char* str, char* str2) 30 { 31 if(*str == '\0' && *str2 == '\0') 32 return 0; 33 if(*str2 - *str == 0) 34 { 35 strcmp(str+1,str2+1); 36 } 37 else 38 { 39 int num = *str2 - *str; 40 cout << "num = " <<num<<endl; 41 return num; 42 } 43 } The output is: num = 6 num = 0 Why is it printing 0 when obviously the value that it should be returning is 6?

    Read the article

  • In C++, what is the "order of precedence" for shadowed variable names?

    - by Emile Cormier
    In C++, what is the "order of precedence" for shadowed variable names? I can't seem to find a concise answer online. For example: #include <iostream> int shadowed = 1; struct Foo { Foo() : shadowed(2) {} void bar(int shadowed = 3) { std::cout << shadowed << std::endl; // What does this output? } int shadowed; }; int main() { Foo().bar(); } I can't think of any other scopes where a variable might conflict. Please let me know if I missed one.

    Read the article

  • MPI Barrier C++

    - by aryan
    Dear all, I want to use MPI (MPICH2) on windows. I write this command: MPI_Barrier(MPI_COMM_WORLD); And I expect it blocks all Processors until all group members have called it. But it is not happen. I add a schematic of my code: int a; if(myrank == RootProc) a = 4; MPI_Barrier(MPI_COMM_WORLD); cout << "My Rank = " << myrank << "\ta = " << a << endl; (With 2 processor:) Root processor (0) acts correctly, but processor with rank 1 doesn't know the a variable, so it display -858993460 instead of 4. Can any one help me? Regards

    Read the article

  • Interpreter in C++: Function table storage problem

    - by sub
    In my interpreter I have built-in functions available in the language like print exit input, etc. These functions can obviously be accessed from inside the language. The interpreter then looks for the corresponding function with the right name in a vector and calls it via a pointer stored with its name. So I gather all these functions in files like io.cpp, string.cpp, arithmetic.cpp. But I have to add every function to the function list in the interpreter in order for it to be found. So in these function files I have things like: void print( arg ) { cout << arg.ToString; } I'd add this print function to the interpreter function list with: interpreter.AddFunc( "print", print ); But where should I call the interpreter.AddFunc? I can't just put it there below the print function as it has to be in a function according to the C++ syntax. Where and how should all the functions be added to the list?

    Read the article

  • Why won't this compile and how can it be implemented so that it does?

    - by George Edison
    Here is some C++ code I'm playing around with: #include <iostream> #include <vector> #define IN , #define FOREACH(x,y) for(unsigned int i=0;i<y.size();i++) { x=y[i]; #define ENDFOREACH } using namespace std; int main() { vector<int> ints; ints.push_back(3); ints.push_back(4); ints.push_back(5); ints.push_back(6); FOREACH(int item IN ints) cout << item; ENDFOREACH return 0; } However, I get an error: macro "FOREACH" requires 2 arguments, but only 1 given The code compiles if I change the IN to a comma. How can I get the IN to take the place of a comma?

    Read the article

  • new >> how would i read a file that has 3 columns and each column contains 100 numbers into an array

    - by user320950
    int exam1[100];// array that can hold 100 numbers for 1st column int exam2[100];// array that can hold 100 numbers for 2nd column int exam3[100];// array that can hold 100 numbers for 3rd column void main() { ifstream infile; int num; infile.open("example.txt");// file containing numbers in 3 columns if(infile.fail()) // checks to see if file opended { cout << "error" << endl; } while(!infile.eof()) // reads file to end of line { for(i=0;i<100;i++); // array numbers less than 100 { while(infile >> [exam]); // while reading get 1st array or element ???// how will i go read the next number infile >> num; } } infile.close(); }

    Read the article

  • Getting a unix timestamp as a string in C++

    - by wyatt
    I'm using the function time() in order to get a timestamp in C++, but, after doing so, I need to convert it to a string. I can't use ctime, as I need the timestamp itself (in its 10 character format). Trouble is, I have no idea what form a time_t variable takes, so I don't know what I'm converting it from. cout handles it, so it must be a string of some description, but I have no idea what. If anyone could help me with this it'd be much appreciated, I'm completely stumped. Alternately, can you provide the output of ctime to a MySQL datetime field and have it interpreted correctly? I'd still appreciate an answer to the first part of my question for understanding's sake, but this would solve my problem.

    Read the article

  • Template meta-programming with member function pointers?

    - by wheaties
    Is it possible to use member function pointers with template meta-programming? Such as: class Connection{ public: string getName() const; string getAlias() const; //more stuff }; typedef string (Connection::*Con_Func)() const; template<Con_Func _Name> class Foo{ Connection m_Connect; public: void Foo(){ cout << m_Connect.(*_Name); } }; typedef Foo<&Connection::getName> NamedFoo; typedef Foo<&Connection::getAlias> AliasFoo; Granted, this is rather contrived but is it possible? (yes, there are probably much better ways but humor me.)

    Read the article

  • array, I/O file and standard deviation (c++)

    - by JohnWong
    double s_deviation(double data[],int cnt, double mean) { int i; double sum= 0; double sdeviation; double x; //x = mean(billy,a_size); for(i=0; i<cnt; i++) { sum += ((data[i]) - (mean)); } sdeviation = sqrt(sum/((double)cnt)); return sdeviation; } When I cout the result from this function, it gave me NaN. I tested the value of (mean) and data[i] using return data[i] and return mean they are valid. when i replaced mean with an actual number, the operation returned a finite number. but with mean as a variable, it produced NaH. I can't see anything wrong with my code at the moment. Again, I am sure mean, data are getting the right number based on those tests. Thank you

    Read the article

  • Multiple-File Template Implementation

    - by Maxpm
    With normal functions, the declaration and definition are often separated across multiple files like so: // Foo.h namespace Foo { void Bar(); } . // Foo.cpp #include "Foo.h" void Foo::Bar() { cout << "Inside function." << endl; } It is my understanding that this cannot be done with templates. The declaration and definition must not be separate because the appropriate form of the template is created "on-demand" when needed. So, how and where are templates typically defined in a multiple-file project like this? My intuition is that it would be in Foo.cpp because that's where the "meat" of functions normally is, but on the other hand it's the header file that's going to be included.

    Read the article

  • Why is this c++ string concatenation missing a space?

    - by danutenshu
    I am working with c++ strings, and am a beginner at programming. I am expecting: 99 Red Balloons But I am receiving: 99 RedBalloons Why is that? #include <string> #include <iostream> using namespace std; int main() { string text = "9"; string term( "9 "); string info = "Toys"; string color; char hue[4] = {'R','e','d','\0'}; color = hue; info = "Balloons"; text += (term + color + info); cout << endl << text << endl; return 0; }

    Read the article

< Previous Page | 43 44 45 46 47 48 49 50 51 52 53 54  | Next Page >