Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 5 years ago.
Improve this question
As far I understood the right place to put the default parameters is the declaration file (*.h). So for example:
test.cpp
void print_a(int a){
std::cout << a;
}
test.h
void print_a(int a = 5);
In this case I could have a third file. Where I can run print_a() with or without parameters.
main.cpp
#include test.h
int main(void)
{
print_a();
print_a(6);
return 0;
}
The problem is, what if inside test.cpp I have another function that wants to use print_a without parameters? The compiler tells me that the function has too few arguments.
How do you do it then ?
You need to provide the declaration of the function, with the default value, in test.cpp. The best way to do that is to #include test.h in test.cpp.
Related
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 12 months ago.
Improve this question
I currently have a namespace set up like this:
SomeClass.h
namespace somenamespace {
class SomeClass {
public:
foo();
}
}
SomeClass.cpp
namespace somenamespace {
SomeClass::foo() {
somehelperfunction();
}
}
void somehelperfunction() {
std::cout << "hejflsdjf\n";
}
Without changing my header file, I cannot find a way to implement this helper function in a way which allows my class implementation to access the helper function. I was under the impression that as long as the helper function was in the same file I would be able to access it within the class implementation. But I get a "undeclared identifier" error when trying to build.
Functions must be declared before called.
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 2 years ago.
Improve this question
game.h:
enum Game_state { MAIN_MENU, /*...*/ };
namespace list { class Linked_list { public: Linked_list() {} }; }
class Game {
public:
static Game_state state;
static list::Linked_list<Obj> objs;
};
Game_state Game::state = MAIN_MENU;
list::Linked_list<Obj> Game::objs = list::Linked_list<Obj>();
This gives me the linker error: multiple definition of Game::state (and Game::objs).
If I take out the type specifiers it gives me the compiler error: 'state' in 'class game' does not name a type (same for objs).
All I need is to initialize these members.
I'm using mingw on 32 bit windows 10.
You have to move those definitions into a translation unit (cpp file). Otherwise you will redefine them every time you include the header file somewhere, violating ODR.
Put the definitions of 'game::stat' and 'game::objs' in a *.cpp file and link against it.
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 3 years ago.
Improve this question
When I compile my files I get this warning :
In file included from AsyncSQL.cpp:8:0:
AsyncSQL.h: In constructor 'CAsyncSQL::CAsyncSQL()':
AsyncSQL.h:192:10: warning: 'CAsyncSQL::m_iCopiedQuery' will be initialized after [-Wreorder]
int m_iCopiedQuery;
^
Here is my AsyngSQL.H http://pastebin.com/u72kyuq7
So what am I doing wrong?
The problem is the order in which you initialize members in the initializer list on line 22,
_SQLResult(): pSQLResult(NULL), uiNumRows(0),
uiAffectedRows(0), uiInsertID(0)
These should appear in the same order as they appear in the class definition. For example:
class test {
test(): foo(1), bar(2) { }
int foo;
long bar;
};
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
I am running into an error when compiling. The error states that 'string' is not declared. I know I'm not supposed to "include" anything in these files. The header file declares a class, and lists the member functions. Two of those functions have an integer passed as a parameter, and two others have a string passed as a parameter. The .cpp file is using namespace, and the string variable is definitely declared. What could be the issue?
Security.h
class Security
{private:
public:
void Driver();
void EncFileUsingRot(int rotNum);
void EncFileUsingCrypto(string file);
void DecFileUsingRot(int rotNum);
void DecFileUsingCrypto(string file);
};
Security.cpp
#include<fstream>
#include<iostream>
#include "Security.h"
using namespace std;
Two errors.
Firstly Security.h should have
#include <string>
Secondly
void EncFileUsingCrypto(string file);
should be
void EncFileUsingCrypto(std::string file);
and
void DecFileUsingCrypto(string file);
should be
void DecFileUsingCrypto(std::string file);
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 5 years ago.
Improve this question
I have a class, defined in a .h like this
#ifndef JLLABOUR_H
#define JLLABOUR_H
class JLLabour{
public:
JLLabour(int, int);
double* recursivefft(double*,int);
void FFT(int*);
~JLLabour();
private:
int width;
int height;
};
#endif // JLLABOUR_H
and in my .cpp I have the definition of my recursive function, the problem is that when I call it again , during compilation it doesnt allow me to continue because the method has not been defined yet. I dont know how to solve this, please help.
#include <JLLabour.h>
double* JLLabour::recursivefft(double* x,int asize){
//operations and declartions...
//...
even = recursiveFFT(sum,m); //<-- the problem is here, in the recursion.
odd = recursiveFFT(diff,m);
// more operations....
return result;
}
}
FYI I am compiling under Linux, using Qt because Im developing a graphic app...
C++ is case sensitive. Your method is called recursivefft not recursiveFFT.