C++ :: Bad Value Result From Operator Using Objects
Jul 24, 2013
I keep getting an undesired value in this code. I've tried several methods, but none are giving me the correct answer. The out put is always zero, when in this case it should be 10!!
Here's the object structure:
template<class T, class _b>
struct quantity {
private: T value;
public:
explicit quantity(T val): value(val) {};
T getValue() { return value; };
Why does it seem that the assignment operator is the harder operator to overload? Maybe it's just my luck, but I seem to always run into issues whenever I work with it. I hardly ever experience errors when overloading any of the other operators.
trying to understand operator overloading, and i wrote some code just to define a "-" operator to do a simple subtraction. SO, i wrote a program that can perform a subtraction between two objects and put the result in the third object. now I Just cant show the result on the console. And also can anyone define the meaning of [b1.x], like I want to know am I assigning the value to the "b1"object or the x variable? This is a very concept that I need to understand.
#include<iostream> using namespace std; struct Ok { int x; int y; };
Ok operator-(const Ok& a , const Ok& b)
{ Ok result; result = (a - b); return result; } int main()
I'm trying to compare 2 fractions using operator overloading. The program crashes when this is called;
this is definition: bool operator == (const Fraction& f1, Fraction& f2) { if (f1==f2)return true; else return false; }
this is my calling in the main: Fraction f1, f2; cout<<"Enter in the format: 2/4 or 4/9 "; cout << "enter first fraction: "; f1.Input(); cout << "enter second fraction: "; f2.Input();
Fraction result: result = (f1 == f2);//i think problem lies here. result.Show();
and this is the prototype of the operator: friend bool operator == (const Fraction& f1, Fraction& f2);
I designed a class template to create unique arrays. I was able to successfully input data to and output data from my array objects, irrespective of the datatype. However, I can't for the life of me fathom why my overloaded assignment operator worked perfectly well only for integer datatype and not for double/string datatypes.
Here is the class definition:
template <class dataType> class myArray { public: void setArrayData();
[code]....
And here is the definition of the overloaded assignment operator:
And here is my main function that tests the operations on objects of the class:
int main(){ //object declarations myArray<double> list(5); //a single-parameter object declaration of class myArray myArray<double> myList(2,13); //a two-parameter object declaration of class myArray
[code]....
The problem I'm having starts from where the assignment operator is being tested: for double and string datatypes, the upper input/output section works fine, but the assignment section freezes the display until the program execution is manually terminated!
What works: Adding two pointers. The output is correctly produced.
The problem in particular occurs in main when p1 and p2 are attempted to be multiplied. The code attempts to release the memory upon multiplication but I receive a run-time error.
The output for the difference of the two polynomial objects is incorrect. It is displaying addresses.
I cannot get my function overloading the input operator for rational type objects to work.
lab9.cpp: In function ‘std::istream& operator>>(std::istream&, const rational&)’: lab9.cpp:186:20: error: invalid initialization of reference of type ‘std::istream& {aka std::basic_istream<char>&}’ from expression of type ‘rational’ return (inputFrac);
lab9.h
#include <iostream> using namespace std; class rational { public: rational(); rational(int a, int b);
// Creating and joining string objects #include <iostream> #include <string> using std::cin; using std::cout; using std::endl; using std::string; using std::getline; // List names and ages void listnames(string names[], string ages[], size_t count) {
[Code] ....
I may be wrong, but the problem seems to be in the function "listnames". Specifically, the output statement inside the while loop. I don't understand , how the ++ operator is behaving in this statement. The output produced does not match what's printed in the book. I usually just type all the examples, but with this one I also downloaded the source code from the book's website to make sure the error wasn't due to mistyping.
I'm doing a refresher for C++ and have gotten to operator overloading. I'm trying to perform an operator overload with the insertion (<<) operator, but I have encountered a problem.
Here's my class [In a header file "Shinigami.h"]
#include<string> namespace K{ class Quincy; class Shinigami{ friend std::ostream& operator<<(std::ostream&, const Shinigami&);
[Code] .....
If the operator function is a friend of the 'Shinigami' class, why doesn't it recognize any of it's private members? I need it to be in this file because I'm doing a bit of association with the 'Quincy' class.
I thought it was the namespace, but I included that.
This has been bothering me for a while now, and I finally put together an example:
#include <iostream> #include <string> using namespace::std;
[Code]....
In the code above, the two classes hold pointers to each other, and that's fine but it doesn't seem right since C++ prefers to pass by reference. Yes, it can still do that (see testbox and testball) but even that seems odd to me because still you need to use pointer notation for the enclosed object. Am I the only one who feels this way, and should I just get over it? Or am I missing something that would allow an object to hold a reference?
Info:Program that stores information about reports .the above function searches the report according to its title. list is the name of the structure that stores the records.
Why i'm using strstr:
for eg. there is a report titled 'report on tigers'
I want the report information to be output if someone searches for 'tiger'
Output:displays all the entries i have made till now
I'm trying to understand the pass by value-result. The code I have came up with so far only does by value and by reference, which I understand. The value-result is what has me stumped, and honestly I am unsure how to write the function for it. Here's my code so far...
#include <iostream> using namespace std; // Function prototypes. void swapByValue(int, int, int); void swapByRef(int&, int&, int&);
I am trying to make the code below display the result with decimals. I tried using setprecision, but I am not too sure where to put it. I placed it in cout section where the answer is but it still doesn't come out correctly.
#include <iostream> using namespace std; //*Delcare function prototype* int ConvertToCentimeters (double, double ); //declare exception class* class NegativeNumber
how to use the result of an if statement in my program. I'm writing a program for a knockout tournament, so i want to extract the winner of each match to carry forward in the code for use in the next round. I've tried assigning another variable (#define r1w1) and saying that the variable = cName[0] or cName[1] in the if statements like this: (i did this because i thought i could then use r1w1 later in the code)
if(scorea1 > scoreb1) { printf(" "); printf("WINNER OF ROUND 1 MATCH 1 IS %s ", cName[0]); cName[0] = r1w1
I am creating a program that allows the user to enter the number of days worked and calculates the amount of money gained by doubling the amount from the previous day, starting with .01 cents. The program works fine except for in day 3, the program adds .01 along with doubling the amount from day 2. Also I must use a List Box.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;
I am trying to compare 2 strings of characters The users input containing 5 chars is compared to a table If the input is already be existent in the table the index of those chars in the table is printed Quest: how to copy the result of a printf() into an array ? The last printf() gives a sequence of numbers and I am trying to save that sequence to another array for further operation ! I have not been able to do that so far even with tmp[]=i ;
Code: #include <stdio.h> #include <string.h> #define N 30 #define n 100 int main (void) [code]....
I am having a problem using fprintf. I have a function which flips a coin. Heads prints a text to the screen. Tails prints a different text to the screen. My problem is getting the result to print to a text file.
Code:
#include <stdio.h> #include <stdlib.h> #include<time.h> void seedrnd(void); int coinflip(int small, int large); }
I'm making a simple calculator and have done it all right where you can input everything, all the functions are there, but when i run the program it will come to displaying the result and it will always equal zero, I just need it to say 8+8 = 16 rather than 8+8 = 0, i don't know whether its just displaying the results as 0, or not displaying it at all, the code will follow below:
So I want to go from having 0 or 1 to having words like false or true. I did it with an if statement earlier today, but I had to get rid of the whole bool thing. I made the variable just a float. But he requires we use bool. Here is my code:
Car y; cout << "Initial value for the Car: " << endl; cout << "Age= " << y.getAge() << " years old. The Price= $" << y.getPrice() << endl; y.setAge(8); y.setPrice(12000); y.setRaceCarStatus(true); cout << "Modified value for the Car: " << endl;
[Code]...
I commented (//) the if statement that I had earlier. If I set RacecarStatus to True, is cout's 1. The starred (*) line right above the comments is the line that I was required to add. I want to cout the actual word true. The one I had this morning won't work anymore.
I do not have code - I am just wondering if I have a method which gets input from the keyboard and returns it, how would I store that information in a new method after calling it and put the result of it into an array.
The results of my code is supposed to be very simple: return the 2 integers and then their sum. However, it's doing returning the first value, then an address in memory(rather than the 2nd value), and then the 2nd value(rather than the sum). Here is the code:
I'm doing a bitwise operations on 2 bytes in a buffer, then storing the result in a variable. However, I sometimes get a non-zero value for the variable even though I'm expecting a zero value.
The relevant portion of the code is as follows.
unsigned int result = 0; long j = 0, length; unsigned char *data; data = (unsigned char *)malloc(sizeof(unsigned char)*800000);
[Code] ......
I'm expecting result to be zero when my data[j] and data[j+1] are 0xb6 and 0xab respectively, which is the case for most of the time. However, for certain values of j, my result is strangely not zero.
j = 62910, result = 64 j = 78670, result = 64 j = 100594, result = 64 j = 165658, result = 512 j = 247990, result = 128 j = 268330, result = 512 j = 326754, result = 1 j = 415874, result = 256 j = 456654, result = 1024 j = 477366, result = 512
It appears that these strange result values are all powers of 2, with a 1 bit appearing somewhere in the unsigned int.
I'm not changing the value of result anywhere else in the code, and when I print out (unsigned int)(((data[j]^0xb6)<<8)|(data[j+1]^0xab)), I get 0, but somehow when it gets stored in result, it's no longer zero.