Here is a function,which deletes the spaces of a string...
char *removespaces(char *s1) {
Code: char *s2=s1;
int i,j=0;
for (i = 0; i<strlen(s1); i++){
if (s1[i]!=' ') {
s2[j]=s1[i];
[Code] .....
why I have to initialize the pointer *s2 with the first element of the array s1...???If I don't initialize the pointer,or initialize it with something else,I get a segmentation fault...
I would like to initialize an arry containing function pointers with adresses of functions that have a variable number of arguments.
Below the code that works in principle. I would however get rid of the warning message during compilation pointing to the initialzation of the funtion pointers in the array. How do I need to cast the pointers to the functions ?
Code: gcc func_ptr_init.c func_ptr_init.c:28: warning: initialization from incompatible pointer type func_ptr_init.c:32: warning: initialization from incompatible pointer type
Here we have an array of character pointers. The pointers are stored in name[i]. And they point to the characters of the i-th string, which are stored somewhere else in memory. But Is the character pointer pointing to the first character in the character string that is stored somewhere else in memory? I assume so because a string itself is an array of characters. And if that is the case, how does the pointer know what the last character should be? Does it just search for the null terminator?
It doesn't make sense to me why this is working. The way my mind is thinking about this is that vertices is an array of type VertexPos, so then why can it be initialized with objects of type XMFLOAT3?
I have a class containing a map member that I want to initialize at declaration time. I know I can do it in the cpp file but I'm having a problem with the order of initialization (static initialization order fiasco).
My questions are:
Is it possible that the scenario in which, the Test's constructor's implementation and the map initialization instruction are in the same cpp file and constructor is called when the map is not initialized yet, could happen?
Is it possible to initialize the map in class like I did? I get these errors:
in-class initialization of static data member 'std::map<std::basic_string<char>, Test*> Test::a' of incomplete type temporary of non-literal type 'std::map<std::basic_string<char>, Test*>' in a constant expression
If yes, does this initialization resolve the static initialization order fiasco?
class Test { public: static std::map<std::string, Test*> a = {};//this is an error Test(std::string ID) {
I have a custom struct hierarchy that goes vaguely like this:
struct Base {}; struct Derived1 : public Base { int num;
[Code] .....
I'm using "Base" simply as an umbrella struct, so I can access any of the derived structs with a "base" reference(&).
The issue I'm having is, I have a class that has a data member that is a reference to the struct "Base" but, I'm getting an error that says my constructor for this class doesn't provide an initialiser for that data member.
I've tried intialising a derived object for the reference, like so:
I tried to initialize the frames variable but when I go to debug it, it just gives me 30 errors compared to the one error when I don't initialize the frames variable.
#include "Gfx.h" // general gfx lib I made for SDL #include "Input.h" #include "General.h" #include "Sprite.h" #define screenw 620 #define screenh 480
/** CHARS ARE DONE */ //int mousex; int mousey; int mouseon = 0; //int red = 0; int green = 0; int blue = 0;
I've a problem with the map construct. I wrote this class in which there are maps:
class Features { private: map<const string,GenericFeatureContainer*> featuremap; map<const string,GenericFeatureContainer*>::iterator it; int size; public: }
The problem is probably the fact that I'm using the variable s in the wrong way, but as I'm very bad at C and C++, at least so far anyway, I've no clue what's wrong. Is it my size that I passed in the marked method?
Also, how do I tell it, later, once this starts to work, to pass the file name of the file it'll copy to as the first param and the file it reads from to the pipe as the second param?
I'm supposed to be reading from a file, and as I was given some code, but it's probably in C and not C++, even if it is, I'm still not that great at C++ either, but anyway, I'm to have the program read from the file and write to the pipe and have the child read from the pipe and write to the output file.
The following is something I am not clear about. Multi dimensional char arrays and the displaying of them.
Code: #include <iostream> using namespace std; main() { //char test[5][5]
[Code] .....
The commented out expression didn't run at all but the double quotation mark one did, unfortunately, it gives me a hexadecimal display. How can I get it to display like this:
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
The error is : invalid initialization of reference of type 'ArrayT<float>&' from expression of type 'const Arrat<float>'...The above errors occur when I tried to do the following code , with operator* overloading :
const ArrayT<float>& b1 = A*A; ArrayT<float>& c2 = b1*A;// <---- this line makes the error //b1 is a const ref of ArrayT<float> //A is just a normal object of ArrayT<float> created by ArrayT<float> A(blah,blah,blah);
The following are the list of operator* overloading :
template <class T> ArrayT<T>& ArrayT<T>::operator*(ArrayT<T>& b) {blah,blah,blah} template <class T> const ArrayT<T>& ArrayT<T>::operator*(ArrayT<T>& b) const
[code]....
I want to use for error multiplication above, but not success.
I am trying to create a `std::map` from `std:: string` to a pointer to member function type. I'm initializing the `map` with an initializer list (braced). When I compile, I get a message from the compiler: No matching constructor for initialization.
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
I'm having trouble declaring and initializing a two-dimensional array using the C++11 standard conventions. I would like to know how to do it in C++11 style as know how to use the old style.
the exception im getting is:
c++11_array_exp.cpp:37:3: error: too many initializers for ‘std::array<std::array<std::basic_string<char>, 6ul>, 22ul>’
Why will i use explicit instantiation of a template, for a type? If I do not use explicit instantiation, the template is used to create the necessary function then what is the use of explicit instantiation?
In the above eg. explicit instantiation is done for char type. What is the use of this?? If the compiler can make use of the template to make a fn for char type.
This program was running at first but when I started to change the couts and cins to fouts and fins (in order for them to be save in a file directory), it shows a lot of errors such as:
initialization of 'fin' is skipped by 'case' label 'std::ifstream fin': redefinition
Here is the code of the program:
#include <iostream> #include <iomanip> #include <fstream> using namespace std; struct file{ int fnum; char fname[50], lname[50];
Well, I thought I had this program working but now I'm getting the above referenced compiler error. The program is just a basic user interface. It is for a classwork assignment.
The program is to accept user information as a string, convert it (if needed) to either the int or double variable, and then display the result. I'm using stringstream convert to make the change between types, but I'm not sure if I'm using it right (that might be what's causing the error, I'm not sure). Line 36-37 generates the error.
Code: #include <iostream> #include <iomanip> #include <sstream> using namespace std;
i have tried like that int arr[1000000] to initialize but it crashed my programm.but if i do int arr[100000] it works fine..why is that and what is the maximum range of integer array initialization??
I recently discovered the new - new to me anyway! - feature of modern C++ that allows you to set the initial value of a data member when you declare it:
class CINTWrapper{ private: int m_iData=0; };
This even extends to calling member functions that work with initialization I believe:
class CStringWrapper{ private: wchar_t* Allocate_Array(const int iBufferSize); wchar_t* m_pString=Allocate_Array(1); };
At first, this seemed an extremely useful piece of functionality that C++ had been lacking all along. However, the more I thought about it the more it struck me this feature actually undermines one of the principle design elements of the language - that being the Constructor.
As I understand it the primary purpose of the Constructor is specifically to give the programmer a place where it is guaranteed he can always initialize his data members before anything else is done with the class. However, given the new initialization rules this is no longer necessary. So it largely seems to me that Constructors as a whole are no longer necessary either! Copy-Constructors are a special and vital case. Admittedly when I was using them for their intended purpose I hated either the redundancy you had to introduce across multiple Constructors; those with and without arguments and so on, or alternately the fine tuning of helper-functions to do common initialization between these variants. Now however I sort of regret this cast-iron rule has been taken away.
As a last point, I am trying to change the way I think about programming. I am trying to employ more objects than pure C-style ('int' or 'double', etc) data types and especially to move into templates (although absolutely NOT the Hewlett Packard template library!). Given my current understanding of inheritance in particular it seems to me that using pre-initialized data members rather than Constructor-initialization makes object derivation even more complicated, not less so.