bon ben ils racontent vraiment de la mayrde dans cette fqa alors
#include <iostream>
#include <vector>
class Machin {
public:
void UtiliseUnConst(const std::vector<const char*> param);
void UtiliseUnPasConst(std::vector<const char*> param);
};
void Machin::UtiliseUnConst(const std::vector<const char*> param) {
std::cout << "pwnt\n";
}
void Machin::UtiliseUnPasConst(std::vector<const char*> param) {
std::cout << "oki\n";
}
int main(int argc, char **argv) {
std::vector<const char*> girl;
Machin bidule;
bidule.Machin::UtiliseUnPasConst(girl);
bidule.Machin::UtiliseUnConst(girl);
}
USER@USER-PC1 ~
$ g++ testcase.c
USER@USER-PC1 ~
$ ./a
oki
pwnt
edit: AH NON, PIGé, le problème est lié aux templates !!!one
#include <iostream>
#include <vector>
class Machin {
public:
void UtiliseUnConst(const std::vector<const char*> param);
void UtiliseUnPasConst(std::vector<const char*> param);
void UtiliseUnConstDedans(std::vector<const char*> param);
void UtiliseUnPasConstDedans(std::vector<char*> param);
};
void Machin::UtiliseUnConst(const std::vector<const char*> param) {
std::cout << "pwnt\n";
}
void Machin::UtiliseUnPasConst(std::vector<const char*> param) {
std::cout << "oki\n";
}
void Machin::UtiliseUnConstDedans(std::vector<const char*> param) {
std::cout << "pwnt\n";
}
void Machin::UtiliseUnPasConstDedans(std::vector<char*> param) {
std::cout << "oki\n";
}
int main(int argc, char **argv) {
std::vector<const char*> girl;
Machin bidule;
bidule.Machin::UtiliseUnPasConst(girl);
bidule.Machin::UtiliseUnConst(girl);
std::vector<char*> boy;
bidule.Machin::UtiliseUnPasConstDedans(boy);
bidule.Machin::UtiliseUnConstDedans(boy); //<- ligne 41 devrait marcher mais foire
}
$ g++ testcase.c
testcase.c: In function 'int main(int, char**)':
testcase.c:41: error: no matching function for call to 'Machin::UtiliseUnConstDedans(std::vector<char*, std::allocator<char*> >&)'
testcase.c:21: note: candidates are: void Machin::UtiliseUnConstDedans(std::vector<const char*, std::allocator<const char*> >)
là par contre, un machin déclaré vector<const char*> devrait accepter un vector<char*>