質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

615閲覧

vs codeのc++でコンパイルエラー

matsuda2

総合スコア29

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/01/29 10:17

vscodeでc++のソースをコンパイルすると、
"g++.exe -g -Og main.cpp foo/foo.cpp -oa.exe"
"main.cpp:14: undefined reference to `Foo::printout(char const*)'"と出力されます。
何がいけないでしょうか?

html

1main.cpp 2 3#include <iostream> 4#include "foo/foo.h" 5 6int main() 7{ 8 int i = 0; 9 10 for (;i < 2;++i) 11 { 12 ; 13 } 14 15 Foo *foo = new Foo(); 16 foo->printout("hello"); 17 delete foo; 18 19 return 0; 20}

html

1foo.h 2 3class Foo{ 4public: 5 void printout(char const *msg); 6};

html

1foo.cpp 2 3#include <iostream> 4#include "foo.h" 5 6class foo 7{ 8public: 9 void printout(char const *msg) { 10 std::cout << msg; 11 return; 12 } 13};

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/01/29 10:31

Foo と foo は別のクラスだからでしょう。
matsuda2

2021/01/29 10:42

指摘ありがとうございます。 foo.cppのfooをFooに修正したのですが、状況は変わりません。
guest

回答1

0

ベストアンサー

クラス外でメソッドを定義する場合、void Foo::printout(char const *msg){ /* 中身略 */ }のように書く必要があります。class Foo{}をもう一度書いてはいけません。

投稿2021/01/29 10:52

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問