c++ - Why can't I call a class's non-default constructor in another file? -


this question has answer here:

i new c++. have started writing class called row, , trying call non-default constructor create row object in separate main.cpp file, keep getting error not understand. can explain me i've done wrong?

here 3 files:

row.h

#ifndef row_h #define row_h #include<vector> #include<iostream>  class row {     std::vector<int> row; public:     // constructor     row(std::vector<int> row); };  #endif 

row.cpp

#include<vector> #include<iostream> #include "row.h"  // constructor row::row(std::vector<int> row_arg) {     row = row_arg; } 

main.cpp

#include<vector> #include<iostream> #include "row.h" using namespace std;  int main() {     vector<int> v = {1, 2, 3, 4};     row row(v);     return 0; } 

the error receive upon trying compile main.cpp this:

/tmp/ccjvgzew.o:pascal_classes.cpp:(.text+0x71): undefined reference `row::row(std::vector<int, std::allocator<int> >)' /tmp/ccjvgzew.o:pascal_classes.cpp:(.text+0x71): relocation truncated fit: r_x86_64_pc32 against undefined symbol `row::row(std::vector<int, std::allocator<int> >)' collect2: error: ld returned 1 exit status 

that looks linker error, not compiler error, , guess you're getting error because either

  1. you forgot compile row.cpp, or
  2. you forgot link row.o final executable.

if you're compiling command-line, make sure compile both main.cpp , row.cpp. should fix things!


Comments

Popular posts from this blog

c++ - llvm function pass ReplaceInstWithInst malloc -

Cross-Compiling Linux Kernel for Raspberry Pi - ${CCPREFIX}gcc -v does not work -

java.lang.NoClassDefFoundError When Creating New Android Project -