compiler errors - C++: Filescope constants with same name are breaking one definition rule? -


i have 2 constants in 2 different .cpp files, both named const char const * texture_filename = "...";

one in a.cpp , other in b.cpp, @ file scope, , neither file includes other or should see 1 another, vs2010 generates linker error:

a.obj : error lnk2005: "char const * const texture_filename" (?texture_filename@@3pbdb) defined in b.obj

what doing wrong here, , how might fix without needing rename either constant?

what doing wrong here, , how might fix without needing rename either constant?

you defining 2 objects named texture_filename. that's problem.

there more 1 ways fix problem. simplest fix make them static in file scope.

static const char * texture_filename = "..."; 

update, in response op's comment

texture_filename not const object. happens point c style string const. can modify texture_filename elsewhere in file using:

texture_filename = <some other c style string>; 

to make texture_filename const, you'll need use:

// both pointer , points const. const char * const texture_filename = "..."; 

Comments

Popular posts from this blog

java - nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC -

sql - Postgresql tables exists, but getting "relation does not exist" when querying -

asp.net mvc - breakpoint on javascript in CSHTML? -