C++ :: Data Pointed By Ptr2 Must Be Constant

Jan 8, 2014

I have defined a pointer ptr2 as follows:

const void * ptr2 ( new A(20) );

In this case I expect the data pointed by ptr2 must be constant. But when running the program, the data could still be changed successfully. Why ?

Below is the program:

#include <iostream>
using namespace std;

[URL] ....

class A {
public:
A( int ID ) {
cout << "--Constructor with ID=" << ID << endl;
this->ID = ID;

[Code] .....

The output:
--Constructor with ID=20
ID of ptr2 is 20
ID of ptr2 is 21 after changed!
-~Destructor with ID=21
End of main()

Process returned 0 (0x0) execution time : 0.002 s
Press ENTER to continue.

Question: What is the significance of "const" in const void * ?

View 19 Replies


ADVERTISEMENT

C++ :: Constant Data Member Initialization

Apr 9, 2014

Here's a part of my program. What I need to know is how I can pass an argument to the Book constructor so I can change the const data member Category (with cascading capacity if possible. I also posted some of my set functions for further comprehension.

class Book {

friend void CompPrice(Book &,Book&);
//friend function that has access to the member functions of this class
//The arguments sent to it are by address, and of type the class Book, so that it can have access to its member functions
private:
//private data members

[Code]...

View 1 Replies View Related

C++ :: Change Data Of Constant Variable

Dec 9, 2014

I'm using const_cast to change the data of the constant variable. but on next while i'm trying to print the value its showing old data stored.

#include <iostream>
using namespace std;
int main() {
const int a = 5;
const_cast<int &>(a) = 6;
cout << "Hello World " << a << endl;
return 0;
}

Output : Hello World 5

why the value is getting changed again.?

View 4 Replies View Related

C++ :: Defining A Constant Data Member?

Dec 21, 2012

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?

View 3 Replies View Related

C++ :: Reading Data (Constant Numbers) From A File

Feb 24, 2015

How do I get c++ to read a file containing six numbers - a1, b1, a2, b2, a3, and b3 - that are constants for the following equations:

clubangle(degrees) = a1 + b1*0.85*clubnumber

clublength(inches) = a2 + b2*1.05*clubnumber

clubspeed(yards/s) = 1.1 * (a3 + b3 * swingnumber) * (clublength(inches)/40)^2;

View 5 Replies View Related

C++ :: Storing Constant - Frequently Accessed Data

Sep 9, 2013

I'm redesigning some code and I'm wondering what the best ways to store and access certain data is. The characteristics are as followed:

1) Based on data from a file, a distance matrix (N x N) is calculated.
2) Once the matrix is complete, the data will never change (unless a new file is read, but I can work around that by iteratively calling the problem with a new datafile on as command line parameter).
3) The data from the matrix is accessed billions of times from pretty much every other line of code.

In my old version, I had a class "Data" which a sub-class "Data::Distance" and I would put a reference in every other class that needed it. Now, my class hierarchy will be much flatter (basically all logic will be in one class; other classes will be POD structs).

Given the characteristics of the Distance table, is there a way to store them in a very efficiently-accessible way? Does it matter if it's stored in the main class where all the action happens in contrast to being a different class? Does making it static improve the performance? Casting it to const? Anything?

Again, the data is accessed billions of times so even minor differences can save a lot of time.

View 10 Replies View Related

C++ :: Delete Member Of Vector That Is Pointed By Pointer?

Apr 17, 2013

I have following:

struct Point {int* a; int b;};
vector<vector<Point> > numbers;
vector<int> example;

The numbers vector has a matrix of a sort and each of the members are pointing to one member in the example vector. A member numbers.at(2).at(3).a is pointing at example.at(3). Now, can I remotely delete a member in the example vector using the pointers? Like so:

delete (*(numbers.at(2).at(3).a));

I know there is a more convenient way to delete members, but this is a very specific case I'm working on.

View 3 Replies View Related

C++ :: Accessing Pointed-to Value In A Struct Vector Of Pointers?

Apr 30, 2013

I have a vector (structures) in a struct (instances). I make a declaration of this struct called instance. The vector is a 3-layer vector of pointers, like so:

vector < vector < vector<scene::IAnimatedMeshSceneNode*> > > structures; (The type is from Irrlicht 3D). I have 3 nested "for" loops which looks similar to the following:

for (int a = 0; a < instance.structures.size(); a++) { /*note:vector size previously set*/
for (int b = 0; b < instance.structures[a].size(); b++){
for (int c = 0; c < instance.structures[a][b].size(); c++) {

if (1) { //checking value of variable not included in snippet

(instance.structures)[a][b][c] = smgr->addAnimatedMeshSceneNode(fl);
(instance.structures)[a][b][c]->setPosition(renderPos);
}
}
}
}

The problem is in these two lines, I think:

(instance.structures)[a][b][c] = smgr->addAnimatedMeshSceneNode(fl);
(instance.structures)[a][b][c]->setPosition(renderPos);

These are currently referencing the pointers, it seems. The program compiles but crashes at this point. I need them to reference the values of the pointers. Problem is, I don't know where to put the dereference operator (*). Where should it go?

View 4 Replies View Related

C :: Distinguish Between Character Constant And String Constant

Feb 20, 2015

Can distinguish between character constant and string constant giving examples

View 1 Replies View Related

C++ :: Why Cannot Copy String Pointed By Pointer To Array Of Char

Feb 22, 2013

I have this function in a class: and a private declaration: how can I copy the parameter "ProductName" to allowedProductName. I tried all combination and I can't get it to compile.

private:
StatusPanel &statusPanel;
char allowedProductName[MAX_NAME_LENGTH];

[Code].....

View 9 Replies View Related

C++ :: Enforcing That A Function Does Not Modify Dynamic Array Pointed To By Pointer

Aug 21, 2014

In case the question was not very clear. Say I have the following code:

int sum(int * x, size_t N){
int sx;
/* returns sum of elements in x */
return sx;

[Code] ....

I'm curious to know whether there is a way that ensures a function does not modify the memory pointed to by a pointer.

View 9 Replies View Related

C++ :: Non Constant Member Function Being Called Inside Constant Member Function?

Dec 28, 2012

#include <iostream>
class Hello {
public:
void Test() {

[Code].....

As i know a non-constant member function cant be called inside a constant member function but how the above code has been compiled successfully and giving the expected result .

View 5 Replies View Related

C++ :: Expression Must Have Constant Value?

Oct 23, 2013

line 27 and line 88 Im having a hard time figuring it out what the error is.

#include<iostream>
#include <cmath>
#include<algorithm>

[Code]....

View 2 Replies View Related

C++ :: Why Are All Strings Constant

Apr 10, 2013

why all strings are always constant?

View 2 Replies View Related

C :: Pointer Cannot Be Initialized With A Constant

May 20, 2014

Why pointer cannot be initialized with a constant like.

Code: int *p = 3000;

View 6 Replies View Related

C++ ::  Pass By Constant Copy

Jun 16, 2014

I have never seen anyone pass by const copy and there probably is a reason. I know that the compiler ignores top level const-ness of function arguments. There are functions which take arguments without manipulating those arguments return the result, for example the C Standard Library funcion double sqrt (double x). The function shouldn't modify it's argument, but it can since the argument isn't const.Take these two functions for example:

double square_root_1(double arg)
{
arg = 7; // we won't get the desired results
return arg * arg;

[code]....

So isn't it better to pass by const copy to make sure that you (or someone else) don't by accident modify the argument? The only disadvantage I see is that it makes the code too verbose.

View 10 Replies View Related

C++ ::  Random Integer Must Be A Constant

Mar 18, 2014

//VALID:
const int CONSTANT=100;
int integerArray[CONSTANT]={ 0 };

//but after getting input let's say:
cin>>randomInteger;
int integerArray[randomInteger]; // This is invalid.

// VISUAL STUDIO 13 Says : randomInteger must be a constant; If so?
const int CONSTANT=randomInteger; //This is also invalid.

How to get user defined

//Input in a constant variable?

How to resolve this? I know dynamically allocation other than this.

I am using VISUAL STUDIO 13 ....

View 3 Replies View Related

C++ :: Constant Declaration In Function

Jan 20, 2013

What is the difference between:

const int testFunction() &
int testFunction() const

View 3 Replies View Related

C++ :: Constant After Member Function

Aug 27, 2013

#include<iostream>
using namespace std;
class Student{
public:
int age;
int rollNo,marks;
string name;
void AddEntry();

[Code] .....

error: non-member function 'void Display(Student*, int)' cannot have cv-qualifier|

why and how can I solve it?

View 7 Replies View Related

C++ :: Replacing Macro With Constant

Apr 4, 2013

I heard that const shall be preferred over #define . So I start to change my program accordingly.

But then below error message occurs during compilation:

#include "common.h"
#include "definition.h"
#include "particle.h"
int main() {
Particle *p = new Particle();

[Code] .....

I guess the error occurs because, when the line 9 of particle.h (File 4) is compiled, value of const int dimension is not seen by the compiler.

View 6 Replies View Related

C++ :: Category And Constant Storage

Mar 14, 2013

I have a class that I'm going to use to store a category. Right now there are seven options, but there is the potential for a whole lot more in the future. So I started off by storing an integer as the private member. I then used static constants to define the numeric values to represent each category, then a set of static constant strings that corresponds to those numbers in case I need their actual names. Finally I set up some static functions to convert between the integer value and the string, and vice versa.

I'm not sure if this is the best way to go about this. For one it makes the categories names and designations unchangeable. I thought that storing them in a file would be a better option, but then i needed a container that is the equivalent of a constant.

I thought of defining a class to contain an int and the associated string. It would be designed so that it can only be initialized with both items. Then provide no functionality to change the contents. So I've basically created my own constant.

View 4 Replies View Related

C++ :: Cannot Appear In A Constant-expression (list)

Aug 4, 2014

Why do I get the error 'rec' cannot appear in a constant-expression ?

I have the following definitions:

... string rec[6];
list<rec> musicList;
...

View 17 Replies View Related

C++ :: Reference With Constant Modifier

Dec 24, 2012

double &val = 66.6; //illegal
const double &val = 66.6; //legal

I was just doing some demo programs and came through the above concept but not able to identify what exactly the need of the above concept . what magic exactly const is doing in the second case ?

Where exactly we can use this concept in real time programming ?

View 4 Replies View Related

C :: Adding Constant To Multiple Variables

May 20, 2013

Instead of using:

Code:
x=x+k
y=y+k
z=z+k

Is there a more elegant method of adding the same constant to many variables?

Something like: Code: (x, y, z) = (x, y, z) + k ??

View 5 Replies View Related

C++ :: Constant Char Not Being Interpreted Correctly

Oct 23, 2013

I am trying to use libXl to output text from a C++ program to an Excel file. The problem is coming with this library function:

bool writeStr(int row, int col, const wchar_t* value, Format* format = 0)

Writes a string into cell with specified format. If format equals 0 then format is ignored. String is copied internally and can be destroyed after call this method. Returns false if error occurs. Get error info with Book::errorMessage().

If I give input as a string literal like "Hello World" it is displayed correctly. However, if I try to give input as a variable of type const char*, it displays garbage.

Following is my code. MyCompany::company is a QString.

const char* companyName = MyCompany::company.toStdString().c_str();
sheet->writeStr(4, 0, companyName, companyFormat);

View 3 Replies View Related

C++ :: Static Constant Member Initialization

Jun 5, 2013

I am having a problem concerning a static const member variable I want to use to set a certain property of my class during development time. The question actually concerns proper implementation as I do have a solution that "works" at least. The variable should denote the size of a member array which I don't want to allocate on the heap due to serious performance issues. So here is my code:

//MyClass.h
class MyClass{
public:
static const int MyArraySize = 256;
private:
int MyArray[MyArraySize];
};

This works but it's not nice for two reasons:

1) It doesn't separate interface from implementation. I would prefer to define the variable in the corresponding .cpp file but it doesn't work:

//MyClass.h
class MyClass{
public:
static const int MyArraySize;

[Code] .....

If I delete the line int MyArray[MyArraySize]; the above code works but when I use it to define the size of the array I get a "constant expression expected" error for the line int MyArray[MyArraySize]; which makes sense as the compiler does not know the value of MyArraySize when he reaches int MyArray[MyArraySize]; and therefore can not allocate the memory. Of course I can move MyArray to the heap like that:

//MyClass.h
class MyClass{
public:
static const int MyArraySize;
static const int MyValue;

[Code] .....

But as I mentioned before this causes a remarkable loss of performance.

Something like the following does not work:

//MyClass.h
class MyClass{
public:
static const int MyArraySize = (int) pow(2, 8);
private:
int MyArray[MyArraySize];
};

This gives a "constant expression expected" error for the line static const int MyArraySize = (int) pow(2, 8);

Interestingly the following code works:

//MyClass.h
class MyClass{
public:
static const int MyValue;
};

//MyClass.cpp
#include "MyClass.h"
const int MyClass::MyValue = (int) pow(2, 8);

So if I use pow outside of the class definition I get no errors. Is there any solution to those problems? So what I want is:
1) Don't allocate the array on the heap
2) Separate interface from implementation
3) Being able to use functions like pow to define MyArraySize
4) Not use global variables

View 19 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved